以下是我设置列表视图的代码。我想在listview上实现click事件,但它不起作用。我在清单中为listview设置了clickable属性。此外,我的列表视图位于相对布局内,并且此相对布局位于线性布局中。我的list_details具有相对布局的textview和imageview。你能帮我搞清楚吗?提前谢谢。
public class ListImageBaseAdapter extends BaseAdapter {
...
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = l_Inflater.inflate(R.layout.list_details, null);
holder = new ViewHolder();
holder.txt_itemName = (TextView) convertView.findViewById(R.id.name);
holder.itemImage = (ImageView) convertView.findViewById(R.id.photo);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
System.out.println(titles.length);
holder.txt_itemName.setText(titles[position]);
holder.itemImage.setImageResource(imgid[position]);
holder.itemImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("here1");
}
});
holder.txt_itemName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
System.out.println("here2");
}
});
return convertView;
}
...
答案 0 :(得分:1)
I want to implement a click event on the listview, but it is not working.
检查两件事
1-你有实现列表点击这个方式吗?
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// @todo
}
});
2-列表行中是否有可点击的项目 如果是,请参考
Android: ListView elements with multiple clickable buttons
http://mylifewithandroid.blogspot.in/2011/08/focus-problems-with-list-rows-and.html
用于处理行中的点击项目:
1- Imaplent you activity with View.OnClickListener
2- Pass it to adpter
3- holder.itemImage.setOnClickListener(mActivity)
4- override the View.OnClickListener in activity
答案 1 :(得分:1)
您有几个选择。
您可以在getView()方法中返回convertView之前应用侦听器。像这样:
public View getView(int position, View convertView, ViewGroup parent) {
.....
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
return convertView;
}
OR(正如@DheereshSingh所提到的)你可以在包含ListView的Activity内部的一个级别完成此任务。
ListView lv = (ListView)findViewById(R.id.listView);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
});
答案 2 :(得分:0)
如果您使用的是listview,您可以随时使用Dheeresh的方法。
如果您只是在寻找onclick,您也可以使用
View view = convertView;
view.setTag(position);//Sets a position
view.setonclicklistener(new OnClickListener){//creates a onClicklistener for tag
public void onClick(View v){
//Do something
}
}
您也可以将它用于gridview。
如果你想做额外的东西,你可以实际设置baseadapter中的每个项目,让点击事件每次都做不同的事情。