Могу ли я иметь различные кликабельные представления в одном элементе ListView?

1

У меня есть Custom ListView, который имеет ImageView и TextView. и я реализовал ListView.setOnItemSelectedListener();

Но это способ сделать как ImageView, так и TextView Clickable (отдельно), я имею в виду, что Click on ImageView должен вызвать ActivityA, а Click on TextView должен вызвать ActivityB?

Теги:
listview
clickable

4 ответа

3
Лучший ответ

Да, вы можете сделать это внутри самого класса адаптера. Просто установите прослушиватели кликов для ImageView и Textview в классе Adapter.

  • 0
    в этом случае я не должен реализовывать onItemSelectedListener () ??
  • 0
    если вы не хотите событие щелчка строки списка ...... тогда не нужно ......
Показать ещё 1 комментарий
2

Да, конечно!

В пользовательском ListAdapter вы можете установить onClickListener, как показано ниже:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View row = convertView;
    if( row == null ){
        LayoutInflater vi = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = vi.inflate(this.textViewResourceId, null);
    }

    row.findViewById(R.id.image_item).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

        }
    });

    row.findViewById(R.id.text_item).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

        }
    });     
}
1

есть много примеров для того же

как это

точка должна

  • Вам нужно установить прослушиватель для каждого представления в getView (не создавать в каждом случае в режиме просмотра просто пройти уже созданную или передать это и реализовать слушателя в том же классе адаптера)

  • сделать вид (например, TextView) clickable true

  • Вам также потребуется позиция строки, поэтому вы можете использовать другую логику, например, get & Set tag или parse view, как в этой ссылке

1

Да, конечно, вы можете это достичь. Вы можете установить onClickListener на них отдельно внутри класса адаптера, а затем установить эти кнопки или текстовые поля как неконцентрируемые, если вы хотите выполнить другое действие при нажатии на весь элемент списка, используя onItemClickListener.

        yourButton.setFocusable(false);
        yourButton.setFocusableInTouchMode(false);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню