具有自定义布局的ListFragment不会填充空列表通知程序

时间:2014-12-18 19:39:06

标签: android android-layout android-listfragment

我使用ArrayAdapter为ListFragment创建了自定义布局,但是当数组为空时,不会显示空消息。我在控制台上没有错误。我的最低SDK版本是15,不需要使用支持库。

headline_list.xml (即我的自定义布局文件)

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent" >

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

    <TextView android:id="@+id/my_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

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

</LinearLayout>

HeadlineFragment.java

public class HeadlineFragment extends ListFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
        return inflater.inflate(R.layout.headline_list, container, false);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        List<String> headlines = ...;          // populate headlines list

        setListAdapter(new ArrayAdapter<String>(getActivity(),
                R.layout.headline_list, R.id.my_text, headlines));
    }
}

3 个答案:

答案 0 :(得分:0)

你在这里得到建议,你应该尝试..无论如何,这种布局对我来说非常有用:

@Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);

            ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, from);
            setListAdapter(adapter);

            return rootView;
        }

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragmet"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

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

    <!-- Here is the view to show if the list is emtpy -->
    <TextView
        android:id="@id/android:empty"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="No Results" />
</RelativeLayout>

答案 1 :(得分:0)

我只是忘了设置文字!

设置后,我的TextView显示正确:

<TextView android:id="@id/android:empty"
    android:textSize="16sp"
    android:textStyle="bold"
    android:text="@string/empty_text"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

使用strings.xml文件中的字符串资源:

<string name="empty_text">There are no data</string>

不幸的是,TextView也显示在列表的每一行中,但这是另一个问题。

答案 2 :(得分:-1)

它可能与线性布局有关,而且您没有为每个项目指定权重属性,因此可以覆盖另一个项目。检查你的布局参数和这个: Showing empty view when ListView is empty

相关问题