2014-10-31 65 views
0

我想在ListFragment內部創建一個ListView。我的列表是自定義的,所以它是使用適配器創建的。但aplication粗魯,給我這個錯誤您的內容必須有一個列表視圖,其id屬性是「android.r.id.list 這是ListFragment類:錯誤與片段內的listView

public static class DummySectionFragment extends ListFragment { 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_section_dummy, container, false); 
     Vector<String> names=new Vector<String>(); 
     names.add("Alex"); 
     names.add("Julia"); 
     setListAdapter(new MyAdapter(getActivity(), names)); 

     return rootView; 
    }   
} 

這是MyAdapter類:

public class MiAdaptador extends BaseAdapter { 
    private final Activity activ; 
    private final Vector<String> list; 

    public MiAdaptador(Activity activ, Vector<String> list) { 
      super(); 
      this.actividad = activ; 
      this.list = list; 
    } 

    public View getView(int position, View convertView, 
            ViewGroup parent) { 
      LayoutInflater inflater = activ.getLayoutInflater(); 
      View view = inflater.inflate(R.layout.adapter_view, null, true); 
      TextView textView =(TextView)view.findViewById(R.id.titulo); 
      textView.setText(lista.elementAt(position));   

      return view; 
    } 
} 

我fragment_section_dummy佈局:

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Name list" 
     android:gravity="center" 
     android:layout_margin="10px" 
     android:textSize="10pt"/> 
<FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1"> 
     <ListView 
       android:id="@android:id/list" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:drawSelectorOnTop="false" /> 
     <TextView 
       android:id="@android:id/empty" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" /> 
</FrameLayout> 
</LinearLayout> 

而且我adapter_view佈局:

<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="?android:attr/listPreferredItemHeight"> 

     <TextView android:id="@+id/title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:singleLine="true" 
      android:text="title" 
      android:gravity="center"/> 
     <TextView android:id="@+id/subtitle" 
       android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:text="Other text" 
      android:layout_below="@id/title" 
      android:layout_alignParentBottom="true" 
      android:gravity="center"/> 
</RelativeLayout> 

我該如何解決這個問題?

+0

順便說一句,我建議你使用'ArrayList '而不是'Vector',它已經過時了:http://stackoverflow.com/questions/1386275/why-is-java-vector-class已考慮過時或已棄用 – 2014-10-31 22:42:44

+0

好的,謝謝,我會改變它! – Sergiohernandez 2014-11-01 10:54:23

回答

0

我開始認爲你應該把你的膨脹視圖附加到根視圖。

變化膨脹到:

查看rootView = inflater.inflate(R.layout.fragment_section_dummy,容器,TRUE);

另一個選擇可能是隻使用onCreateView()方法膨脹主佈局。並使用onStart()方法來設置列表適配器。這種方式可以確保Android知道您的自定義佈局。

發佈完整的堆棧跟蹤可能有助於解決您的問題。

0

還有其他類擴展到ListFrament的類(如DummySectionFragment),但這些並沒有擴展具有ListView的佈局。所以我不得不改變那裏的父類(片段而不是ListFragment),它已經解決了。 感謝您的回答