Я везде искал решение этого, но я не могу выяснить, как реализовать его. Мой OnItemClickListener
был отключен так или иначе на моем ListView
строки, потому что я имею ImageButton
в размещении строк, которое принимает фокус. Были многочисленные вопросы, которые я нашел, но ни один из них не получил меня нигде.
Я проверил этот вопрос, но я не мог действительно понять его. Мне просто нужен способ получить строки, активируемые по щелчку так, чтобы я мог обнаружить, когда строка нажимается. Долго нажимайте, и фокус хорошо работают.
Вместо OnItemClickListener, добавьте OnClickListener к каждому из ваших представлений, возвращаемых из адаптера. Вам нужно будет использовать setItemsCanFocus
, настраивая ваш список:
ListView list = (ListView) findViewById(R.id.myList);
list.setAdapter(new DoubleClickAdapter(this));
list.setItemsCanFocus(true);
и затем в Adapter's getView
, это даст строку с возможностью клика. Предполагается, что кнопка находится в раздутом xml.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(context, R.layout.cell, null);
view.setClickable(true);
view.setFocusable(true);
view.setBackgroundResource(android.R.drawable.menuitem_background);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new AlertDialog.Builder(context).setTitle("touched").show();
}
});
return view;
}
Для моей версии этой проблемы проблема заключалась в том, что я установил свой TextView
объект android: inputType = "textMultiLine"
. Когда я удалил эту строку, проблема со списком, который нельзя было щелкнуть, исчезла. Похоже на маленькую неприятную ошибку.
Кроме того, я все еще могу использовать свойства android: minLines / android: maxLines
без проблем, так что это не большая проблема. Просто не то решение, которое я ожидал.