2011-08-09 63 views
0

如果我使用simple_list_item_multiple_choice佈局,如何處理空ListView?帶有simple_list_item_multiple_choice佈局的空ListView

「的Android開發者說,我應該使用android前綴 機器人:ID =」@機器人:ID /空 但要注意不能把如何與simple_list_item_multiple_choice

protected ListView mFavList; 
ArrayList<String> fakeFavs; 

mFavList.setAdapter(new ArrayAdapter<String>(this.android.R.layout.simple_list_item_multiple_choice,fakeFavs); 

使用它,如果fakeFavs是?空

+1

嘗試初始化'fakeFavs =新的ArrayList ()'設置適配器之前。 –

+0

是的,在設置適配器之前,代碼中有初始化字符串,但在程序的第一次運行時,fakeFavs(這是用戶的聯繫人列表)必須設置爲null,因爲列表爲空。我需要正確處理空白列表,例如顯示「無數據」消息。 – Kenneth

+0

使用fakeFavs.isEmtpy()然後代替fakeFavs ==例如代碼空 – MrJre

回答

0

我解決我的問題

所有我需要的 - 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"/>