2015-09-17 3 views
0

У меня есть LinearLayout, который включает в себя, помимо прочего, два ListViews. Каждый ListView имеет собственный ArrayAdapter. Теперь прокрутка не должна быть в ListViews, пользователь должен увидеть все списки и прокрутить весь вид. Sourrounding LinearLayout с ScrollView не работает из-за inerhit Scrolling Views ....android listview без прокрутки

Как я могу расширить ListViews и позволить пользователю прокручивать только внешний вид?

+0

Вместо ListViews использовать вертикальные LinearLayouts и раздувать представления для них. – Alpha

+0

как я могу надуть их? Извините, я всегда использовал ArrayAdapter со списком ListView ... – lis

ответ

1

Вы не должны использовать ListView таким образом.

Представления списков предназначены для повторной обработки представлений, которые он не может сделать, если это не прокрутка.

Вы можете просто использовать LinearLayout и добавить каждый вид в макет. Это было бы лучше, чем использование ListView.

(Это не означает, что она является лучшим решением)

+0

поэтому мне нужно создавать все представления программно? Или есть способ использовать ArrayAdapter далее? – lis

+0

Да, это работает! Я нашел пример, как использовать ArrayAdapter с LinearLayout здесь: http://stackoverflow.com/a/12405779/2186109 – lis

0

Это можно легко сделать в RecyclerView. Но в этом случае вы используете ListViews, поэтому попробуйте listView.setScrollContainer(false); может быть это сработает для вас

+0

К сожалению, не – lis

0

ListViews нельзя переоценить, чтобы потерять способность прокрутки. Кажется, что они созданы как объекты верхнего уровня, которые занимают весь экран.
Так в основном у вас есть 2 варианта здесь:

  • переведет все свои элементы в элементы управления ListView
  • использовать LinearLayouts вместо ListViews и обернуть все элементы в ScrollView
0

Вы должны раздуть Просмотров Понравилась ,

// from content View of activity or fragment 
    listView = (LinearLayout) findViewById(R.id.sos_list_view); 

    listView.removeAllViews(); 
    List<SosObject> sosList = batabase.getAllItems(); 

      for(SosObject t: sosList) { 
       LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

// Item layout 
       View view = inflater.inflate(R.layout.sos_prewivew_item, null); 

       TextView comment = (TextView) view.findViewById(R.id.sos_comment_text); 
       TextView date = (TextView) view.findViewById(R.id.sos_date_text); 
       TextView id = (TextView) view.findViewById(R.id.sos_answer_id); 
       TextView tittle = (TextView) view.findViewById(R.id.answer_tittle); 

       listView.addView(view); 
      } 
     } 

Ваш XML должен выглядеть так:

<ScrollView> 
    <LinearLayout> 
      </LinearLayout > // Fist list 
      </LinearLayout > // Second list 
    </LinearLayout> 
</ScrollView> 
+0

Извините, можете ли вы расширить свой код? Что такое sosList, DaAns, SosObjects, ...? – lis

+0

нет необходимости. в основном это один из моих разделов кода приложений. SosObject - это экземпляр объекта, который вы хотите отобразить. Это один элемент списка. Я отредактировал код для лучшего понимания. – Alpha