ListView с OnItemClickListener android
Я использую ListView
с помощью RatingBar
и ImageButton
. Вот моя проблема: когда я нажимаю на ListView
, мой OnItemClickListener
не работает. Пожалуйста, помогите мне.
Код:
ListView lv = getListView();
setContentView(lv);
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3)
{
Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show();
}
});
Спасибо заранее!
Ответы
Ответ 1
Хотя очень старый вопрос, но я все равно отправляю на него ответ, чтобы он помог кому-то.
Если вы используете какой-либо макет внутри представления списка, используйте...
android:descendantFocusability="blocksDescendants"
... на первом родительском макете внутри списка. Это работает как волшебство, клик не будет потребляться каким-либо элементом внутри списка, но будет напрямую переходить к элементу списка.
Ответ 2
Эй, проверьте это, работает для меня... надеюсь, что это сработает и для вас.
Если элемент списка содержит ImageButton
Проблема: OnItemClickListener
просто не отвечает вообще!
Причина: Идея
Решение: в коде установите ImageButton
focus на "false"
1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
2: button.setFocusable(false);
Ответ 3
У меня есть Activity, который расширяет ListActivity.
Я попытался сделать что-то подобное в onCreate:
ListView listView = getListView();
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.i("Hello!", "Y u no see me?");
}
});
Но это не сработало.
Вместо этого мне просто нужно было переопределить onListItemClick:
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Log.i("Hello!", "Clicked! YAY!");
}
Ответ 4
если в представлении элемента списка есть кнопка или флажок или кнопка изображения,
onitemclicklistener и onitemlongclicklistener, не работающие из-за этого, имеют собственный прослушиватель onclick.
установить фокусное значение как false
holder.button.setFocusable(false);
Ответ 5
Если вы хотите включить элемент, нажмите в режиме просмотра списка
listitem.setClickable(false);
это может показаться неправильным на первом месте, но оно работает!
Ответ 6
1) Проверьте, используете ли вы OnItemClickListener или OnClickListener (который не поддерживается ListView)
Документация для разработчиков Android DeveloperView
2) Проверьте, правильно ли вы добавили Listener в свой ListView. Он подключался к ListView не к ListAdapter!
ListView.setOnItemClickListener(listener);
3) Если вам нужно использовать OnClickListener, проверьте, используете ли вы DialogInterface.OnClickListener
или View.OnClickListener
(их можно легко обменивать, если не проверять или использовать их оба)
Ответ 7
Если вы определяете свой ListView программно:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
Ответ 8
setClickable как false для ImageButton, как этот
imagebutton.setClickable(false);
а затем выполните OnItemClickListener
в listview.
Ответ 9
listPaired = (ListView) findViewById(R.id.listView1);
listPairedData = new ArrayList<String>();
araPaired = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listPairedData);
listPaired.setAdapter(araPaired);
listPaired.setOnItemClickListener(listPairedClickItem);
private OnItemClickListener listPairedClickItem = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
String info = ((TextView) arg1).getText().toString();
Toast.makeText(getBaseContext(), "Item "+info, Toast.LENGTH_LONG).show();
}
};
Ответ 10
Вы также можете использовать "лямбда", синтаксис Lambda не поддерживается под Java 1.7 или более ранними версиями JVM.
listView.setOnItemClickListener((parent, view, position, id) -> {
});
Ответ 11
В Java, как и другие, предлагайте
listitem.setClickable(false);
Или в xml:
android:clickable="false"
Он работает очень хорошо
Ответ 12
Есть ли и изображение в просмотре списка, которое вы используете > затем перейдите по ссылке:
http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/
Я думаю, что когда вы работаете над ссылкой, которую я предоставил, каждая вещь будет работать нормально, я пробовал это. Если вы хотите уточнить ответ, пожалуйста, уточните вопрос с кодом и описанием.
Ответ 13
Просто вставьте строку в RatingBar:
android:isIndicator="true"
В XML это выглядит так:
<RatingBar
android:id="@+id/ratingBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:isIndicator="true"
android:clickable="false"
android:focusable="false"
android:focusableInTouchMode="false" />
Ответ 14
lv.setOnItemClickListener(new OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// TODO Auto-generated method stub
}
});
Ответ 15
Android OnItemClickLIstener конфликтует с OnClickListener элементов строки listview в Adapter. Вам просто нужно убедиться, что ваш код хорошо управляется и правильно написан со стандартами.
Проверьте ответ в приведенной ниже ссылке:
Сделать список кликабельным