除非调用getListView(),否则ListFragment不显示列表元素?

时间:2016-01-09 04:20:15

标签: android listview android-fragments

问题在于我的onActivityCreated方法,这里我设置适配器wget -q -O - http://instance-data/latest/meta-data/instance-id ,但没有显示列表项。但是,如果我完全使用方法setListAdapter()我的列表项显示!我遵循了代码,我相信listview正在内部设置getListView();

此时我知道它为什么会发生,但我真的很想知道为什么要调用ListFragment.ensureList() - 是否要添加标题或添加点击监听器 - 是什么如果你真的只是显示一个列表,你不需要任何交互或没有标题!

getListView()

编辑:fragment_books.xml

public class ShelfFragment extends ListFragment {

    // Our list view (The root view)
    private View mRoot = null;


    // Do all data initializations here
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    // container should be fragment_container
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        mRoot = inflater.inflate(R.layout.fragment_books, container,false);
        return mRoot;
    }

    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        TextView tv = new TextView(getActivity());
        tv.setText("List header");
        //getListView();

        String[] bookData = new String[]{
                "Book 1",
                "Book 2",
                "Book 3",
                "Book 4"
        };

        ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_activated_1, bookData);
        setListAdapter(adapter);
    }

}    

之前我没有发布这个原因是因为我不想让我的问题变得复杂和笨重 - 但我现在明白我需要为你们提供更多的背景。 我如何包含片段(fragment_activity.xml):

<?xml version="1.0" encoding="utf-8"?>
<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingTop="16dp"
    android:paddingBottom="16dp"
    android:background="#888"
     />

1 个答案:

答案 0 :(得分:1)

整件事都很合适。但由于您尚未在此处发布xml文件,因此只能在xml listview id中确保列表视图ID为android:id="@android:id/list"。 listview应该在fragment_books.xml

这里我使用了以下xml并使用了ShelfFragment代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_img">

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


</LinearLayout>

<强> 更新 更改列表ID之后,如果您想要回答片段或输出屏幕截图中的答案,那么事情就无法提供更多详细信息。[![在此处输入图像说明] [1]] [1]

正如您在问题中添加的那样

之前我没有发布此内容的原因是因为我不想让我的问题变得复杂和笨重 - 但我现在明白我需要为你提供更多的背景

请检查http://i.stack.imgur.com/hpu3C.png我从您的片段代码中获得的内容。