我为我的smudge/clean
设置了自定义BaseAdapter
,其中我实现了ListView
。
问题是永远不会调用AdapterView.OnItemClickListener
方法。我想我需要在我的主onItemClick(AdapterView<?>, View, int, long)
中而不是interface
自定义适配器中实现Activity
。
MyListViewAdapter.java :
ListView
我是对的吗?
答案 0 :(得分:2)
为什么在适配器内部有OnItemClickListener?!您可以在Adapter内部使用OnClickListener,或者最佳做法是将OnItemClickListener设置为ListView或您在activity / fragment中使用的任何AdapterView。 你现在这样做的方式,由于以下几个原因它不会起作用:
答案 1 :(得分:1)
使用自定义适配器OnItemClickListener不起作用。您必须在getView方法中在视图上注册onClickListener。
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater layoutInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
/**
* Inflating the root view and all his children and set them to a View Object.
*
*/
View row = layoutInflater.inflate(R.layout.list_view_row,null);
// Get all the views in my row
this.a = (TextView) row.findViewById(R.id.a_id;
MyListViewRow myListViewRow = rowsList.get(position);
// Set values to all the views in my row
this.a.setText(myListViewRow.getA());
row.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// do your stuff
}
});
return row;
}