2 ListViews в той же деятельности - PullRequest
1 голос
/ 21 ноября 2011

Если у меня есть 2 или более списка в одном действии, то как мне использовать onclicklistener? Я имею в виду Как узнать, на какой из них пользователь нажимает?

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


        }

Приведенный выше код используется мной, однако, когда я пытаюсь использовать другое представление списка, я просто не могу найти способ определить, по какому списку щелкнули.

Есть идеи для решения этой проблемы?

Ответы [ 4 ]

5 голосов
/ 21 ноября 2011

В этом случае parent - это listView, из которого произошел itemClick.Поэтому вы можете сохранить переменную-член для каждого 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
      }

        }

}
2 голосов
/ 21 ноября 2011

Есть два способа сделать это.

Реализация 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
     }
  });
0 голосов
/ 21 ноября 2011

это довольно просто, только один список может выступать в качестве официального списка в ListActivity, и этот список (и только этот список) должен иметь специальный идентификатор списка (@android: list, я думаю), поэтому просто установите идентификатор другогосписок с другим идентификатором и установить его setOnItemClickListener, чтобы делать все, что вы хотите.В настоящее время я работаю над приложением с 2 listViews и дополнительным фрагментом списка.

0 голосов
/ 21 ноября 2011

Вы можете сделать это так:

  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
     }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...