片段内的listView出错

时间:2014-10-31 21:44:04

标签: android listview fragment

我正在尝试在ListFragment中创建一个ListView。我的列表是自定义的,因此它是使用适配器创建的。但是aplication很疯狂并且给我这个错误你的内容必须有一个listview,其id属性是'android.r.id.list  这是ListFragment类:

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>

我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:0)

我开始认为您应该将视图附加到根视图中。

将通胀改为:

查看rootView = inflater.inflate(R.layout.fragment_section_dummy,container,true);

另一种选择可能是仅使用onCreateView()方法来扩充主布局。并使用onStart()方法设置列表适配器。这样可以确保Android了解您的自定义布局。

发布完整的堆栈跟踪有助于解决您的问题。

答案 1 :(得分:0)

还有其他类扩展到ListFrament(如DummySectionFragment),但这些并没有膨胀具有ListView的布局。所以我不得不改变那里的父(Fragment而不是ListFragment),它已经解决了。 谢谢你的回答