Android - как добавить метод щелчка элемента в ArrayAdapter - PullRequest
8 голосов
/ 14 ноября 2011

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

public class CountryListAdapter extends ArrayAdapter<String> {
private final Activity context;
private final ArrayList<String> names;

public CountryListAdapter(Activity context, ArrayList<String> names) {
    super(context, R.layout.rowlayout, names);
    this.context = context;
    this.names = names;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.rowlayout, null, true);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    textView.setText(names.get(position));
    return rowView;
}

Ответы [ 3 ]

10 голосов
/ 14 ноября 2011

Предполагается, что вы используете ListActivity, реализующий OnItemClickListener Вы можете использовать этот код:

ArrayAdapter<Object> ad = new ArrayAdapter<Object>(this,
                android.R.layout.simple_list_item_checked, items);
        setListAdapter(ad);
        ListView list = getListView();
        list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        //list.setItemChecked(0, true);
        list.setOnItemClickListener(this);

EDIT: В противном случае, если вы не расширили ListActivity, создайте представление списка в макете и замените ListView list = getListView() чем-то вроде ListView list = findViewById(R.id.listView). Заменить list.setOnItemClickListener(this) на

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            }
        });
4 голосов
/ 14 ноября 2011

Просто реализуйте AdapterView.OnItemClickListener.

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
    Intent i = new Intent(this, ProductActivity.class);
    i.putExtra("item_id", manager.getItemIdAtIndex(pos));
    startActivity(i);
}

Затем просто установите класс с этим методом в качестве onItemClickListener в вашем адаптере.

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

После настройки адаптера с помощью:

mListView.setAdapter(myCountryListAdapter); 

Затем вы можете настроить прослушиватель щелчков для просмотра списка:

mListView.setOnParentClickListener(new  OnClickListener() {         
    public void onClick(View view,) {
            ///do what you want the click to do
    }       
    });
...