2同一活动中的ListViews

时间:2011-11-21 17:24:53

标签: android xml listview onclick

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

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


        }

上面的代码是我使用的,但是当我尝试使用另一个listview时,我找不到一种方法来检测单击哪个listview。

要解决这个问题的任何想法吗?

4 个答案:

答案 0 :(得分: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
      }

        }

}

答案 1 :(得分: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
     }
  });

答案 2 :(得分: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
     }
  });

答案 3 :(得分:0)

非常简单, 只有一个列表可以作为ListActivity下的正式列表,这个列表(只有这个列表)应该有特殊列表ID(@android:列表我认为)所以只需将其他列表的id设置为其他ID并设置它的setOnItemClickListener可以做任何你想做的事情。我目前正在使用一个包含2个listView和另一个列表片段的应用程序。