2013-04-10 3 views
0

제 조각에서 두 개의 목록을 표시하려고합니다. 첫 번째 (array1)를 보여 주면 괜찮습니다. 하지만 두 번째를 추가하면 처음 두 번째 목록으로 바뀌고 두 번째 목록 (배열 2) 만 보입니다. 여기에 내 코드가 있는데, 여기에 무슨 문제가 있는지 말해 줄 수 있니? 나는 그것이 두 개의 목록과 같이 할단편에 하나의 목록 만 표시됩니다.

<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> 

:

<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 :

여기
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입니다 : 여기

내 조각 파일입니다 , 두 번째는 낮은 너비입니다. 나에게 무엇을 할 지 말해줘!

+0

android:layout_width를 하드 코딩 사용. 이유가 될 수 있을까요? – 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. ListViewListFragmentandroid.R.id.list입니다. 단 하나만있을 수있다. 해당보기와 함께 Fragment을 사용하십시오.
  2. ListFragment을 넣으려는 경우 android:id="@+id/fragment_container"이있는 경우 이미 잘못하고 있습니다. FragmentFragment에 넣으려고 시도하면 Fragment이 될 수 있습니다.
  3. 정지는 당신이 두 어댑터에 대한``R.layout.trainlist`` ID를 사용하고있는 주제에 있지만 코드에 너무 익숙하지 않다
관련 문제