2017-02-05 1 views
0

Эй, ребята Это мой первый вопрос о stackoverflow. Я ищу по теме почти за 1 месяц, но не нашел ответа.Как установить Listview's Childitem Clicklistener в MainActivity Не в адаптере (в Android)?

Я хочу установить clicklistner в список дочерних элементов в основной деятельности.

Я знаю о Listview.setOnItemClickListner ... и также знаю, как установить дочерний элемент listview в свой собственный адаптер.

Но я не хочу этого ..
Я хочу, чтобы установить дочерний элемент управления ListView, нажав на основной деятельности

это мой основной код активности для элемента списка, нажав ...

list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, final int position, final long id) { 


      final TextView tx; 
      tx=(TextView)view.findViewById(R.id.textList); 



      tx.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(listviewclick_Activity.this, "in= "+String.valueOf(position), Toast.LENGTH_SHORT).show();  // clicking for textview on list 
       } 
      }); 



      view.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        Toast.makeText(listviewclick_Activity.this,"out= "+ String.valueOf(position), Toast.LENGTH_SHORT).show(); // clicking for whole listitem 
       } 
      }); 


     } 
    }); 

Этот код работает нормально, но у него есть проблема, которую пользователь должен нажать первое время после этого все щелчок будет установлен ...

Помните, что я не хочу щелкать дочерний элемент в адаптере. я хочу только щелкнуть его в основном действии. Надеясь на хороший ответ ...

+0

Вы установили прослушиватель кликов внутри прослушивателя кликов, так что вы ожидали? Вам ** необходимо ** установить событие click в методе getView адаптера –

+0

Если я установлю clicklistener в методе getview адаптера, то я не смогу выполнить некоторые задачи, например, если я хочу обновить список и снова вызвать json нажав на дочерний элемент, тогда я не могу сделать это в методе getload Adapter. –

+0

@rajatkathuriya, на самом деле вы можете !, просто создать интерфейс [интерфейс обратного вызова содержит некоторый метод для реализации] и передать ссылку. от этого к вашему адаптеру, а затем после нажатия на то, что вы хотите щелкнуть, вызовите этот метод обратного вызова, который должен быть реализован в MainActivity. –

ответ

0

не понимает, что вы делаете, но эта часть:

view.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Toast.makeText(listviewclick_Activity.this, "out= " + String.valueOf(position), Toast.LENGTH_SHORT).show(); // clicking for whole listitem 
     } 
    }); 

неправильно, потому что view это элемент в виде списка (строка), что есть! уже нажал.

вместо заменить его:

Toast.makeText(listviewclick_Activity.this, "out= " +String.valueOf(position),Toast.LENGTH_SHORT).show(); // clicking for whole listitem 

Кроме того, эта часть:

tx.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Toast.makeText(listviewclick_Activity.this, "in= "+String.valueOf(position), Toast.LENGTH_SHORT).show();  // clicking for textview on list 
       } 
      }); 

не будет работать, если вы щелкните элемент ListView, так и должны переместить его внутри адаптера.

+0

Но есть много ограничений в методе getapter Adapter. Есть ли способ сделать это в основной деятельности ??? –

+0

Если вы хотите назначить прослушиватель для какого-либо компонента в элементе списка (строке), вам нужно будет получить это представление, а затем найти свой компонент и, наконец, назначить слушателя, но это нехорошо, проверьте [this] (http://переполнение стека.com/a/5435999/5993410), поэтому я считаю, что лучше назначать компоненты слушателям внутри 'getView' адаптера –

+0

Я вижу ответ, который вы предоставили по ссылке. Это очень хорошо, но когда мы нажимаем на дочерний элемент, то очевидно, что вид виден. Так есть ли другой способ сделать это в основной деятельности ???? Ваш ответ ценен для меня ... –

Смежные вопросы