0

我正在尝试从 ListActivity 中的 ListView 顶部显示 TextView,但文本未显示。

LayoutInflater inflater = (LayoutInflater)getSystemService( Context.LAYOUT_INFLATER_SERVICE );
View layout = inflater.inflate( R.layout.main, null );
TextView myTextView = (TextView)layout.findViewById( R.id.myTextView );
myTextView.setVisibility( View.VISIBLE );
myTextView.setText( R.string.emptyList );
setContentView( layout );

这是主要布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView android:id="@+id/myTextView"
        android:paddingLeft="10dp"
        android:paddingTop="10dp"
        android:textSize="16sp"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:visibility="gone"/>    
    <ListView  
        android:id="@android:id/list"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"/>
</LinearLayout>

如果列表视图为空,我希望在屏幕顶部显示“空列表”通知。

4

3 回答 3

3

为什么不将 setEmptyView 用于 ListView 并以这种方式进行通知。

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
    android:layout_width="fill_parent"
    android:layout_height="300dip"
    android:id="@+id/list_view" />
<TextView
    android:id="@+id/empty_list_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="List view is empty"
    android:visibility="gone" />
</LinearLayout>

并调用您的代码。

ListView listView = (ListView) findViewById( R.id.list_view );
listView.setEmptyView( findViewById( R.id.empty_list_view ) );
listView.setAdapter(yourAdapter);

检查这些以获取更多信息。

AdapterView中setEmtpyView的正确使用

http://www.technotalkative.com/android-listview-setemptyview/

于 2012-12-24T22:37:51.403 回答
1

您可以使用 aFrameLayout而不是 a LinearLayout,这样 theTextView和 theListView将共享相同的布局空间(尽管不是绝对必要的)

然后您可以将ListView 空视图设置为myTextView,它会自动为您显示或隐藏空视图。

于 2012-12-24T22:36:45.860 回答
0

我不确定您对 TextView 的含义。当活动加载时,您是否试图在列表上方放置一些东西?在这种情况下,将它添加到 LinearLayout 的列表上方就可以了。

要获得您所指的“空列表”通知,请确保您使用的活动扩展了 ListActivity,而不仅仅是 Activity,并且各个视图的标题为“列表”和“空”。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >

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

<TextView
    android:id="@+id/android:empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/empty_user_list"/>

</LinearLayout>
于 2012-12-24T22:41:04.367 回答