2011-11-21 54 views
1

如果我在一个活动中有2个或更多的列表视图,那么我如何使用onclicklistener?我的意思是我怎么知道用户点击哪一个?2在同一活动中的ListViews

public void onItemClick(AdapterView parent, View v, int position, long id) { 


     } 

上面的代码是我用过,但是当我尝试使用其他的ListView,我无法找到一个方法来检测单击的是哪个列表视图。

任何ideeas解决这个?

回答

5

在这种情况下,parent是itemClick源自的listView。所以你可以做的是为每个ListView保留一个成员变量,并将父对象与这些成员进行比较,以查看哪个列表触发了点击。

所以这里有一个简单的类与我的意思:

public class MyTest extends Activity{ 
    private ListView list1; 
    private ListView list2; 

    public void onCreate(Bundle b){ 
    super.onCreate(b); 

    list1 = new ListView(); 
    list2 = new ListView(); //or findViewById if you declared them in your layout 
    //the rest of your creation code here 
    } 

    public void onItemClick(AdapterView parent, View v, int position, long id) { 
     if(list1 == parent){ 
     //handle list1 click 
     }else{ 
     //handle list 2 click 
     } 

     } 

} 
+0

成员变量?我真的不明白这意味着什么。我的列表视图一个接一个地被删除,而不是单独的功能。请给我一个前例。 –

+0

它们是否用单独的方法声明是无关紧要的。您只需跟踪实例,以便稍后进行比较。我用一个例子编辑了我的回答。 – Chris

+0

非常感谢!它的工作就像一个魅力,现在我觉得有点愚蠢,因为它很容易,但直到现在我从来没有父母的头:)再次感谢! –

0

你可以做到这一点,因为这:

listView1.setOnClickListener(new OnClickListener() {  
    @Override 
    public void onClick(View v) { 
     // TODO: click on first listview 
    } 
    }); 

    listView2.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO: click on second listview 
    } 
    }); 
0

它很简单, 只有一个列表可以为下正式名单行事一个ListActivity和这个列表(只有这个列表)应该有特殊的列表id(@android:list我认为),所以只需将其他列表的id设置为其他id并设置其setOnItemClickListener来执行任何你想要的操作。我目前正在开发一个带有2个listViews和一个额外列表Fragment的应用程序。

2

有两种方法可以做到这一点。

实施OnItemClickListener

public class ListViewTest extends Activity implements OnItemClickListener { 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) { 
     if(view ==myListView)1{ 

     } 
     if(view ==myListView){ 

     } 
    } 
} 

设定自己的听众

myListView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // TODO: click on second listview 
    } 
    }); 
相关问题