【发布时间】:2016-08-17 07:08:56
【问题描述】:
我有一个自定义的BaseAdapter 用于我的ListView,我在其中实现了AdapterView.OnItemClickListener。
问题是永远不会调用onItemClick(AdapterView<?>, View, int, long) 方法。我想我需要在我的主要 Activity 而不是我的 ListView 自定义适配器中实现 interface。
MyListViewAdapter.java:
public class MyListViewAdapter extends BaseAdapter implements AdapterView.OnItemClickListener
{
private Context context;
private ArrayList<MyListViewRow> rowsList = new ArrayList<MyListViewRow>(); // All one row items
private TextView a;
public MyListViewAdapter(Context context,ArrayList<MyListViewRow> rowsList)
{
this.context = context;
this.rowsList = rowsList;
}
@Override
public int getCount()
{
return this.rowsList.size();
}
@Override
public Object getItem(int position)
{
return this.rowsList.get(position);
}
@Override
public long getItemId(int position)
{
return position;
}
/**
* Returns a new row to display in the list view.
*
* Position - position of the current row.
*
*/
@Override
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());
return row;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id)
{
Toast.makeText(context, "onItemClick LV Adapter called", Toast.LENGTH_LONG).show();
}
} // End of MyListViewAdapter class
我说的对吗?
【问题讨论】:
-
你有没有在任何地方调用 listView.setOnItemClickListener ?没有它就不会被调用。
-
@GabeSechan 否,因为我在
BaseAdapter类中实现了interface。 -
这并不意味着什么。你必须调用 setOnItemClickListener 否则它永远不会被调用。
-
onItemClick 侦听器不需要。您可以在 baseadapter 中使用 onclick 侦听器,也可以在您的活动/片段中为您的列表视图设置 onItemclick 侦听器
-
@RanjithKumar 我应该为
myListView.setOnItemClickListener传递什么 ass 参数? @USKMobility 说我不能将OnItemClickListener与自定义适配器一起使用。那么你们谁是对的呢?
标签: java android listview baseadapter onitemclicklistener