Android中的Fragment中的ListView

3

我有一个应用程序,其中包含2个选项卡。每个选项卡都有其相应的片段。在其中一个选项卡上,我需要放置一个列表视图来接收存储数组中的数据并将其作为列表显示。

这是我的代码:

public class Frag3 extends Fragment{


    ListView lv1;
    ProgressDialog ShowProgress;
    public ArrayList<Post> PostList = new ArrayList<Post>();
    TextView tv1;
    Button button1;

   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        if (container == null) {
          return null;
       }
                View view = inflater.inflate(R.layout.tab3, container, false);
                //View tv = view.findViewById(R.id.textView1);

                View listView = view.findViewById(R.id.listView1);

               String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
                    "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
               "Linux", "OS/2" };

               ArrayAdapter<String> files = new ArrayAdapter<String>(getActivity(), 
                        android.R.layout.simple_list_item_1, 
                        values);

                lv1.setAdapter(files);

        return view;
    }

}

我尝试了来自不同网络参考的各种选项,但似乎都没有起作用。请有人友善地指导我前进的方向,因为我现在迷失了方向,无法理解下一步该怎么做。

3个回答

5
最大的问题是变量名称不匹配。你将`lv1`标记为类成员并设置了一个列表适配器,但你使用`listView`来查找视图。其中一个需要更改。
以下更改应该有所帮助:
lv1 = (ListView) view.findViewById(R.id.listView1);    

3
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.tab3, container, false);

        listView = (ListView) view.findViewById(R.id.ListView1);        
        listView.setAdapter(files);

尝试在您的代码中执行此操作


2

尝试使用ListFragment而不是Fragment进行扩展。这将为您的列表提供像onListItemClick这样的功能。在扩展ListFragment时,您还可以使用getListView()。然后在您的xml中,您可以使用android list id:

<ListView
    android:id="@android:id/list"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<TextView android:id="@android:id/empty"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

然后在您的onActivityCreated()方法中,您可以使用setListAdapter来设置列表适配器,而无需使用findViewById


如果你在ListFragment中覆盖了onCreateView方法,如果你是通过xml创建布局的话,这似乎是目前最好的方法。 - Joakim Engstrom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接