Как обрабатывать клики из 2 списков в 1 ListActivity - PullRequest
0 голосов
/ 04 октября 2011

Я начинающий программист в Android и думаю, что это не лучшая практика, но у меня есть список новостей и категорий.Каждый с различными параметрами, которые идут к другой деятельности. Интересно, может ли кто-нибудь быть таким добрым и предложить обходной путь для этого.

nuList = (ListView)findViewById(R.id.list2);
adapter1 = new CategsAdapter(UhoraYCategs.this, names);
nuList.setAdapter(adapter1); 
Utility.setListViewHeightBasedOnChildren(nuList);
list = (ListView)findViewById(android.R.id.list);
adapter = new LazyAdapter(UhoraYCategs.this, imgs, titles, catg);
list.setAdapter(adapter);
Utility.setListViewHeightBasedOnChildren(list);

и слушателей для каждого

protected void onListItemClick(ListView l, View v, int position, long id) {
    Intent i = new Intent(this, UhoraList.class);
    i.putExtra("categoria", names[position]);
    i.putExtra("xml", urls[position]);
    startActivity(i);

}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Intent i = new Intent(this, NewsIntentPave.class);
    i.putExtra("tit", (messages.get(position).getTitle()).toString());
    i.putExtra("descric",(messages.get(position).getDescription()).toString());
    i.putExtra("fecha", (messages.get(position).getDate()).toString());
    i.putExtra("foto", (messages.get(position).getFoto()).toString());
    i.putExtra("url", (messages.get(position).getLink()).toString());
    i.putExtra("banner", "uhora");
    startActivity(i);
}

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

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Мне наконец-то удалось это сделать, идик, если это лучший способ, но он работает.По сути, onCreate добавил setOnItemClickListener в один ListView.

nuList = (ListView)findViewById(android.R.id.list);
lazyAdapter = new LazyAdapter(UhoraYCategs.this, imgs, titles, catg);
nuList.setAdapter(lazyAdapter); 

list = (ListView)findViewById(R.id.list2);
adapter = new CategsAdapter(UhoraYCategs.this, names);

list.setOnItemClickListener(new OnItemClickListener(){
    public void onItemClick(AdapterView<?> parent, View v, int position, long id){
        Intent i = new Intent(UhoraYCategs.this, UhoraList.class);
        i.putExtra("categoria", names[position]);
        i.putExtra("xml", urls[position]);
        startActivity(i);
    }
}); 
list.setAdapter(adapter);

И работал над другим Listview с обычным слушателем.

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    Intent i = new Intent(this, NewsIntentPave.class);
    i.putExtra("tit", (messages.get(position).getTitle()).toString());
    i.putExtra("descric", (messages.get(position).getDescription()).toString());
    startActivity(i);
}

Большое спасибо Мерлину за помощь.

0 голосов
/ 05 октября 2011

При создании ваших представлений в CursorAdapter вызовите view.setTag («Список A») или «Список B» в зависимости от ситуации, затем в методе прослушивателя

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

    if(v.getTag().toString().equals("List A"))
    {
       // do list A stuff
    }
    else
    {
        // do list B stuff
    }
}

UPDATE

Более простой способ - использовать идентификатор родительского элемента управления в операторе switch

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {

    switch(l.getId())
    {
       case R.id.list:
       {
         // do list A stuff
         break;
       }
       case R.id.list2:
       {
         // do list B stuff
         break;
       }
    }
}
...