2013-04-10 2 views
0

Я пытаюсь показать два списка из моего фрагмента. Когда я показываю первый (array1), все в порядке. Но когда я добавляю второй, он просто заменяет первый, и я вижу только второй список (массив 2). Вот мой код, может, пожалуйста, скажите мне, в чем проблема?фрагмент показывает только один список

Вот мой файл фрагмент:

public class ToFragment extends ListFragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     String[] array1 = { 
       "listitem1", 
       "listitem2" 
     }; 
     String[] array2 = { 
       "listitem1" 
     }; 
     ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(inflater.getContext(), R.layout.trainlist, R.id.traintextviewid); 
     adapter1.addAll(array1);  
     setListAdapter(adapter1); 

     ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(inflater.getContext(), R.layout.trainlist, R.id.timetextviewid); 
     adapter2.addAll(array2);  
     setListAdapter(adapter2); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

Вот tofragment.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/fragment_container" 
     android:baselineAligned="false" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_gravity="center" 
     android:orientation="horizontal" > 
     <ListView 
      android:id="@+id/trainlist" 
      android:layout_width="250dp" 
      android:layout_height="wrap_content" > 
     </ListView> 
     <ListView 
      android:id="@+id/timelist" 
      android:layout_width="48dp" 
      android:layout_height="wrap_content"> 
     </ListView>   
</LinearLayout> 

И trainlist.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 
    <TextView 
     android:id="@+id/traintextviewid" 
     android:textIsSelectable="true" 
     android:layout_width="250dp" 
     android:layout_height="48dp"/> 
    <TextView 
     android:id="@+id/timetextviewid" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:textIsSelectable="true" /> 
</LinearLayout> 

Я хочу, чтобы это выглядело как два списка , вторая - малая ширина. Скажите, пожалуйста, что делать!

+0

Я не слишком хорошо знакомы с этой темой, но в коде вы используете '' R.layout.trainlist'' идентификатор для обоих адаптеров. Это может быть причина? – harism

+0

Мне сказали, что это не имеет значения, если я не использую этот макет. Я пытался использовать его с другим макетом, но он не работал – user1933770

+0

А я не заметил, что вы использовали ListFragment. Я тоже не очень хорошо знаю, но на основе документации кажется, что в ListFragment может отображаться только один список. Добавление двух отдельных таких фрагментов может решить проблему для вас. – harism

ответ

0

Если вы хотите объединить два массива и показать результат в listview, добавьте их в один ArrayAdapter. Не создавайте адаптер для каждого массива.

adapter1.addAll(array1); 
    adapter1.addAll(array2);  
    setListAdapter(adapter1); 

, если вы хотите, отдельные списки, вы должны использовать пользовательский фрагмент с два listliews или два ListFragments (один listfragment для одного списка).

0

ListFragment не может поддерживать более одного списка. Если вам нужно больше, используйте обычный Fragment в качестве хоста.

0
  1. ListView в ListFragment проводится под android.R.id.list. Там может быть только один. Используйте Fragment с этим видом.
  2. Если вы пытаетесь установить ListFragment, где находится android:id="@+id/fragment_container", вы уже делаете это неправильно. Вы пытаетесь поставить Fragment в Fragment, чтобы вы могли Fragment.
  3. Прекратить использование жёстко android:layout_width
Смежные вопросы