android - 无法在 android ListView 中实现 ClickListener

标签 android listview

您好,我正在开发一个 Android 项目,我在其中使用 ListView 来列出默认实体。我的 android 代码是这样的,我可以使用 falowing 代码获取项目列表,但我无法实现 onclicklisaner。如果单击列表项目,我希望出现一个消息框,但我无法执行此操作

package com.example.policadda;

public class Help {

	private String title;
	private String address;
	private int iconID;
	private String phonenumber;
	private int callbutton;
	
	public Help(String title, String address, int iconID ,String phonenumber) {
		super();
		this.title = title;
		this.address = address;
		this.iconID = iconID;
		this.phonenumber= phonenumber;
		
	}
	public String getTitle() {
		return title;
	}
	public String getAddress() {
		return address;
	}
	public int getIconID() {
		return iconID;
	}
	public String getphonenumber() {
		return phonenumber;
	}

}
package com.example.policadda;



import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Filter;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

public class MainHelp extends Activity  {
	EditText inputSearch;
	TextView txtphonenumber;
	ArrayList<HashMap<String, String>> productList;
private List<Help> myhelp = new ArrayList<Help>();

@Override
protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	setContentView(R.layout.help);
	inputSearch = (EditText) findViewById(R.id.inputSearch);
	populateComplaintList();
	ArrayAdapter<Help> adapter = new MyListAdapter();
	ListView List = (ListView) findViewById(R.id.helplistview);
	List.setAdapter(adapter);
	     

}





private void populateComplaintList() {
	// TODO Auto-generated method stub
	myhelp.add(new Help("kalasipalya","#12 subramanyapura mainroad",R.drawable.administration1,"7760576191"));
	myhelp.add(new Help("kormangala","#12 subramanyapura mainroad",R.drawable.businessman157,"7760576191"));
	myhelp.add(new Help("raghuvanahali","#12 subramanyapura mainroad",R.drawable.businessman158,"7760576191"));
	myhelp.add(new Help("konankunte","#12 subramanyapura mainroad",R.drawable.administration1,"7760576191"));
	myhelp.add(new Help("thatguni","#12 subramanyapura mainroad",R.drawable.administration1,"7760576191"));
	myhelp.add(new Help("mayurilayout","#12 subramanyapura mainroad",R.drawable.administration1,"7760576191"));
	myhelp.add(new Help("chunchghatta","#12 subramanyapura mainroad",R.drawable.administration1,"7760576191"));
	
}


private class MyListAdapter extends ArrayAdapter<Help>{
	public MyListAdapter(){
		super(MainHelp.this , R.layout.helpdesing , myhelp);
		
	}

	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		View itemView = convertView;
		
	

		if(itemView== null){
			itemView = getLayoutInflater().inflate(R.layout.helpdesing, parent,false);
		}
		
		 Help currenthelp = myhelp.get(position);
		 ImageView imageview = (ImageView) itemView.findViewById(R.id.item_icon);
		 imageview.setImageResource(currenthelp.getIconID());
		 
		 TextView maketext = (TextView)  itemView.findViewById(R.id.item_textTitle);
		 maketext.setText(currenthelp.getTitle());
		 
		 TextView makeaddress= (TextView)  itemView.findViewById(R.id.txtaddress);
		 makeaddress.setText(currenthelp.getAddress());
		 
		 TextView makephonenumber =(TextView) itemView.findViewById(R.id.txtphonenumber);
		 makephonenumber.setText(currenthelp.getphonenumber());
		
		return itemView;
	}
	
}
}

最佳答案

试试这个; 在适配器类中的 getview 方法之后创建点击监听器,

    public OnItemClickListener onItemClick = new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View v, int position,
            long arg3) {
         Toast.makeText(v.getContext(), String.valueOf(position), Toast.LENGTH_SHORT).Show();
    }
};

并如下设置监听器,

    MyListAdapter adapter = new MyListAdapter();
    ListView list = (ListView) findViewById(R.id.action_settings);
    list.setAdapter(adapter);
    list.setOnItemClickListener(adapter.onItemClick);   

关于android - 无法在 android ListView 中实现 ClickListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29329359/

相关文章:

Android按钮onClick拦截滚动

android - 如何从 url 适应 webview 中的图像

java - 如何从 phonegap 和 android 访问相同的 sqlite 数据库?

android - 应用程序因某种原因崩溃 : returning and assigning problems

android - 带有 EditText 的自定义 ListView : Focus

java - 单击项目时 ListView 在纵向模式下崩溃(使用 fragment )

java - 是什么导致调用 View 的 OnDraw 方法以及何时

android - 我可以将新的APK发布到特定国家/地区吗?

android - ListView.Builder 小部件是否必须放在单独的页面上

java - Android:通过单击按钮将一个 Activity 中的 TextView 添加到另一个 Activity 中的 ListView