2015-07-07 7 views
1

В андроиде можно получить все элементы внутри списка. Допустим, просмотр списка имеет несколько строк, и на экране видны только 2 строки, а остальные доступны с помощью полосы прокрутки. Каждая строка имеет переключатель и текстовое представление. Есть ли способ получить все текстовые строки строк, переключатель которых выбран, а не только те, которые видны на экране.Android listview получает все предметы

+0

Вы определенно можете сделать это в своей реализации адаптера. Не могли бы вы показать нам коды ListView и Adapter? –

+0

эй, не позволяя мне опубликовать все его больше, чем максимальные линии. cna, вы даете мне пример того, как я могу это сделать в реализации адаптера? спасибо –

+0

Постарайтесь опубликовать свой сайт на pastebin.com и загрузите ссылку здесь, чтобы мы могли видеть вашу реализацию. –

ответ

0

Ваш ответ может быть:

for(int item = 0; item < m_listitem.count(); item ++){ 
      if(m_listitem[item].isSelected){ 
       View view = ListView.getChildAt(i); 
       TextView textview = view.findViewById(your textView id); 
       // do some thing 
      } 
     } 
+0

wouldnt view.findviewbyid ... get null, если строка не видна? –

+0

вот ссылка http://pastebin.com/iRvhUEud и часть, которую меня беспокоит, начинается с tellOthers.setOnClickListener (новый View.OnClickListener() { –

+0

@MushahidNawazKhan нет, это null, если view равно null или id is not выходы на просмотр. –

0

Вы можете использовать вид пользовательского списка, чтобы показать элементов списка с CheckBox & TextView.

0

У меня было аналогичное требование, когда у меня было несколько EditText внутри ListView, и лишь немногие из них были видны на экране. Мне нужно было получить значения всех EditText, а не только те, которые видны на экране.

Ну, если вы используете адаптер по умолчанию, то, как он будет работать, он будет перерабатывать старые представления для создания новых. Таким образом, нет возможности сохранить значения тех представлений, которые не видны. Таким образом, единственным обходным решением является создание собственного адаптера, возможно, что-то вроде следующего, которое не будет перерабатывать какие-либо представления, но каждый раз раздувает новые.

public class ListViewAdapter extends ArrayAdapter { 

    public ListViewAdapter(Context context, ArrayList<Object> items) { 
     super(context, 0, items); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     return LayoutInflater.from(getContext()).inflate(R.layout.your_layout_for_list_view_item, parent, false); 
    } 
} 

После этого, как указано выше ответ Lãng Tử Bị Điên упомянул, вы можете проверить в своем коде Java, если ваши кнопки радио проверяются или нет, и в соответствии с этим, выбрал нужный TextView s

for(int item = 0; item < m_listitem.count(); item ++){ 
     if(m_listitem[item].isSelected){ 
      View view = ListView.getChildAt(i); 
      TextView textview = view.findViewById(your textView id); 
      // do some thing 
     } 
    } 

Надеюсь, это должно сделать это. Это, безусловно, сработало в моем случае!

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