我解決我的問題
所有我需要的 - main.xml中的佈局和串碼 「空」 的標籤。 mFavList.setEmptyView(findViewById(android.R.id.empty));
在我的程序fakeFavs是從文本文件填充。 如果文件爲空,則正確處理空列表。
也許這對別人有用。工作示例:
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class HelloAndroid3 extends Activity {
/** Called when the activity is first created. */
static final String split_symbol = "\n";
protected ListView mFavList;
protected ArrayList<String> fakeFavs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fakeFavs = new ArrayList<String>();
this.mFavList = (ListView) this.findViewById(R.id.list_favorites);
refreshFavListItems();
}
private void refreshFavListItems() {
//put some code here that populates fakeFavs
//.......
mFavList.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, fakeFavs));
mFavList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
mFavList.setEmptyView(findViewById(android.R.id.empty));
//if fakeFavs will be empty, list shows "No Data"
}
}
main.xml中
<?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="match_parent" >
<ListView android:id="@+id/list_favorites"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1.0"
/>
<TextView android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FF0000"
android:text="No Data"/>
嘗試初始化'fakeFavs =新的ArrayList()'設置適配器之前。 –
是的,在設置適配器之前,代碼中有初始化字符串,但在程序的第一次運行時,fakeFavs(這是用戶的聯繫人列表)必須設置爲null,因爲列表爲空。我需要正確處理空白列表,例如顯示「無數據」消息。 – Kenneth
使用fakeFavs.isEmtpy()然後代替fakeFavs ==例如代碼空 – MrJre