Как мне прослушать событие щелчка в 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) {
}
});
Кажется, что это ничего не делает при нажатии.
И весь этот код находится в классе, расширяющем Activity.
android
listview
click
onitemclicklistener
teepusink
источник
источник
Предположим, что объект 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 */ } });
источник
lv
не доступен внутриonItemClick
. Какой хороший способ обойти это?final ListView lv = (ListView) findViewById(R.id.your_list_view);
Object o = ((ListView)arg0).getItemAtPosition(position);
В методе getView () класса адаптера необходимо установить для расширенного представления «Clickable» и «возможность прослушивать события щелчка».
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
.По умолчанию в сенсорном режиме нет выделения и фокуса. Вы можете посмотреть здесь дополнительную информацию по этому вопросу.
источник
Это решение действительно минималистично и не портит ваш код.
В вашем list_item.xml (НЕ listView!) Назначьте атрибут android: onClick следующим образом:
<RelativeLayout android:onClick="onClickDoSomething">
а затем в своей деятельности вызовите этот метод:
public void onClickDoSomething(View view) { // the view is the line you have clicked on }
источник
view
меня могут быть какие-то метаданные, это может быть способ получить позицию.Вы должны использовать
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(); } });
источник
Во-первых, в классе должен быть реализован прослушиватель кликов:
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(); }
вы можете посмотреть и скачать код здесь
источник
Используйте setOnItemClickListener () api в своей деятельности. Ниже приведен образец.
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<> parent, View view, int position, long id) { // your code here. } });
источник
В Kotlin добавьте слушателя в свой listView так же просто, как java
your_listview.setOnItemClickListener { parent, view, position, id -> Toast.makeText(this, position, Toast.LENGTH_SHORT).show() }
источник