如何在listView上实现动作监听器?
我一直在努力寻找正确的方式来实现一个ListView的动作侦听器。我真正想要完成的是创建一个ListView,并且每当用户点击任何项目时,先前的活动都将被切换。我真的很新,所以请帮助我,我会非常感激。如果你能告诉我我的代码错了,那就太棒了!如何在listView上实现动作监听器?
我使用Fedor的代码[来自这里] [1]。
///Here I tried to Implement an action listener but It doesn't work.
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int position,long id)
{
if(list.getItemAtPosition(position).equals(mStrings[1]))
{
Intent i = new Intent(MainActivity.this, Activity2.class);
startActivity(i);
}
}
});
}
在这种情况下,您需要重写onListItemClick。参考 Click Listener on ListView 获得更多帮助,解决方案是一个相当不错的实现。
这是一个可能的实现,应该在您的主要活动中进行。请记住,只有在保持MainActivity扩展活动时,这才会起作用。
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
// Intent launcher here
}
如果您希望以后扩展ListActivity而不是活动,你需要调用onListItemClick,做下面这个方案
公共类YourClass扩展ListActivity实现OnItemClickListener {
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
setContentView(R.layout.your_layout);
getListView().setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// your stuff here
}
}
我应该在哪里重写onListItemClick?在我的字符串可以找到或LazyAdapterClass的MainActivity?在此先感谢eLobato! – 2011-03-26 15:31:26
在MainActivity中重写它。我不确定您是否可以在LazyAdapter类中重写它。 – eLobato 2011-03-26 15:37:25
感谢您的提示,但可以告诉我如何根据我的代码使用此onListItemClick。我只知道如何使用onItemClick,但没有工作。 – 2011-03-26 16:00:16
什么完全不起作用? onItemClick从未被调用? if语句失败? – MByD 2011-03-26 13:59:27
整个应用程序工作正常,但是,只要我点击任何按钮它什么都不做。我其实想把用户从MainActiviy带到另一个Activity。如果您没有注意到,我在我的MainActiviy.class中使用了.setOnItemClickListener,但未能完成任务?感谢您的重新调整,我希望您有个好主意来帮助我。 – 2011-03-26 14:06:21
让我来重述它。当你点击列表中的一个项目时,应用程序是否开始执行'onItemClick',但if语句if(list.getItemAtPosition(position).equals(mStrings [1]))'返回false并且什么也没有发生,或者应用程序根本就执行'onItemClick'? – MByD 2011-03-26 14:12:42