Как обрабатывать щелчок ListView в Android
Как слушать событие click элемента управления ListView?
вот что у меня сейчас
ListView list = (ListView)findViewById(R.id.ListView01);
...
list.setAdapter(adapter);
когда я делаю следующее
list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView parentView, View childView,
int position, long id)
{
setDetail(position);
}
public void onNothingSelected(AdapterView parentView) {
}
});
это, кажется,ничего не делает на щелчок.
И все эти коды живут в классе, который расширяет активность.
8 ответов:
предположим, что объект ListView является lv, выполните следующие действия -
lv.setClickable(true); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Object o = lv.getItemAtPosition(position); /* write you handling code like... String st = "sdcard/"; File f = new File(st+o.toString()); // do whatever u want to do with 'f' File object */ } });
вам нужно установить завышенное представление "Clickable" и "able to listen to click events" в вашем методе класса адаптера getView ().
convertView = mInflater.inflate(R.layout.list_item_text, null); convertView.setClickable(true); convertView.setOnClickListener(myClickListener);
и объявить прослушиватель щелчка в вашем ListActivity следующим образом,
public OnClickListener myClickListener = new OnClickListener() { public void onClick(View v) { //code to be written to handle the click event } };
это справедливо только при настройке адаптер, расширяя BaseAdapter.
см. ANDROID_SDK / samples/ApiDemos/src/com/example/android/apis/view / List14.java для более подробной информации
два ответа перед моим верны - вы можете использовать
OnItemClickListener
.приятно отметить, что разница между
OnItemClickListener
иOnItemSelectedListener
, в то время как звучание тонкое, на самом деле важно, как выбор элемента и фокус связаны с сенсорным режимом вашегоAdapterView
.по умолчанию в сенсорном режиме нет выбора и фокусировки. Вы можете посмотреть здесь для получения дополнительной информации по этому вопросу.
вы должны использовать
setOnItemClickListener
кто-то сказал.
Код должен быть таким:listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // When clicked, show a toast with the TextView text or do whatever you need. Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } });
это решение действительно минималистично и не испортит ваш код.
в своем list_item.xml (не listView!) присвоить атрибут android: onClick такой:
<RelativeLayout android:onClick="onClickDoSomething">
а затем в вашей деятельности вызовите этот метод:
public void onClickDoSomething(View view) { // the view is the line you have clicked on }
во-первых, класс должен реализовать click listenener :
implements OnItemClickListener
затем установите прослушиватель в ListView
yourList.setOnItemclickListener(this);
и, наконец, создайте метод clic:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show(); }
вы можете посмотреть и скачать код здесь