Android 如何覆盖onListitemClick
我有一个应用程序,它有一个SimpleCursorAdapter。我可以让DB表的内容显示在列表中,但我想在单击列表中的项目时执行一些操作。当我在eclipse中转到源代码并尝试覆盖clickListener时,没有什么可以覆盖的。我正在寻找一个像onListitemClick这样的重写方法。我该怎么做 Eclipse还抱怨onListItemClick方法,说它必须重写或实现超类型方法。如果我删除@Override注释,则该错误会出现,列表将显示,但不会因触摸列表中的项目而触发任何事件Android 如何覆盖onListitemClick,android,listview,simplecursoradapter,onclicklistener,Android,Listview,Simplecursoradapter,Onclicklistener,我有一个应用程序,它有一个SimpleCursorAdapter。我可以让DB表的内容显示在列表中,但我想在单击列表中的项目时执行一些操作。当我在eclipse中转到源代码并尝试覆盖clickListener时,没有什么可以覆盖的。我正在寻找一个像onListitemClick这样的重写方法。我该怎么做 Eclipse还抱怨onListItemClick方法,说它必须重写或实现超类型方法。如果我删除@Override注释,则该错误会出现,列表将显示,但不会因触摸列表中的项目而触发任何事件 pri
private class MyAdapter extends SimpleCursorAdapter {
public MyAdapter(Context context, int layout, Cursor c, String[] from,
int[] to) {
super(context, layout, c, from, to);
}
@Override
public
View getView(int position, View convertView, ViewGroup parent) {
Log.e(TAG, "inside myadapter getview");
View v = super.getView(position, convertView, parent);
if(v == null)
return null;
Cursor c = (Cursor)getItem(position);
String phoneName = c.getString(c.getColumnIndex(LoginValidate.C_PHONE_NAME));
String phoneNumber = c.getString(c.getColumnIndex(LoginValidate.C_PHONE_NUMBER));
((TextView)v.findViewById(R.id.phonename)).setText(phoneName );
((TextView)v.findViewById(R.id.phonenumber)).setText(phoneNumber);
((TextView)v.findViewById(R.id.phonename)).setTextColor(Color.BLACK);
((TextView)v.findViewById(R.id.phonenumber)).setTextColor(Color.BLACK);
return v;
}
}// end of adapter
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.e(TAG, "clicked an item in list");
}
默认情况下,适配器没有onListItemClick()方法,这就是注释困扰它的原因 您必须将onListItemClick()绑定到listView。。。试着用它
ListView list;
list.setOnListItemClick(listAdapter); //if your adapter implements OnListItemListener
还是像这样
list.setOnListItemClickListener(new OnListItemClickListener()
{
@override
public void onClick(args)
{
listAdapter.onListItemClick(args); //you will want this to be the first or the last call here
//maybe some other stuff if you want here
}
}
这应该可以做到
总而言之:
1) 要么在适配器中实现正确的接口,要么需要覆盖注释
2) 将该方法保留在适配器中,并从连接到listview的private onListItemClickListener调用它。Yes turtleboy
您可以通过重写活动中放置listview的方法来实现这一点
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> adapter, View arg1, int position, long arg3) {
//do what you want to do
}
});
listView.setOnItemClickListener(新的OnItemClickListener(){
公共单击(适配器视图适配器,视图arg1,内部位置,长arg3){
//做你想做的事
}
});