2011-03-26 124 views
0

我一直在努力寻找正确的方式来实现一个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);                     
        }                          
       }                          
      }); 


     } 
+0

什么完全不起作用? onItemClick从未被调用? if语句失败? – MByD 2011-03-26 13:59:27

+0

整个应用程序工作正常,但是,只要我点击任何按钮它什么都不做。我其实想把用户从MainActiviy带到另一个Activity。如果您没有注意到,我在我的MainActiviy.class中使用了.setOnItemClickListener,但未能完成任务?感谢您的重新调整,我希望您有个好主意来帮助我。 – 2011-03-26 14:06:21

+0

让我来重述它。当你点击列表中的一个项目时,应用程序是否开始执行'onItemClick',但if语句if(list.getItemAtPosition(position).equals(mStrings [1]))'返回false并且什么也没有发生,或者应用程序根本就执行'onItemClick'? – MByD 2011-03-26 14:12:42

回答

0

在这种情况下,您需要重写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 
} 
} 
+0

我应该在哪里重写onListItemClick?在我的字符串可以找到或LazyAdapterClass的MainActivity?在此先感谢eLobato! – 2011-03-26 15:31:26

+0

在MainActivity中重写它。我不确定您是否可以在LazyAdapter类中重写它。 – eLobato 2011-03-26 15:37:25

+0

感谢您的提示,但可以告诉我如何根据我的代码使用此onListItemClick。我只知道如何使用onItemClick,但没有工作。 – 2011-03-26 16:00:16