这是我的自定义列表视图布局。
我添加了一个带有id“android:empty”的“空列表”文本视图,但当列表为空时,“空文本”视图不会显示。
请问有什么建议吗?
更新 - 更新了布局。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="?android:attr/listPreferredItemHeight"
android:paddingLeft="5dip" android:paddingRight="5dip"
android:paddingTop="15dip" android:paddingBottom="15dip"
android:cacheColorHint="@color/match_bg2" android:background="@color/match_bg">
<ImageView android:id="@+id/flag_left" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/flag"
android:src="@drawable/flag_default" />
<LinearLayout android:orientation="vertical"
android:padding="10dip" android:layout_width="0dip" android:gravity="center"
android:layout_weight="1" android:layout_height="fill_parent">
<TextView android:id="@+id/item_match_label"
android:layout_width="wrap_content" android:layout_height="0dip"
android:layout_weight="1" android:gravity="center"
android:textColor="@color/match_fg" android:textStyle="bold"
android:singleLine="true"
android:ellipsize="marquee"
android:focusableInTouchMode="true"
/>
</LinearLayout>
<ImageView android:id="@+id/flag_right" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/flag"
android:src="@drawable/flag_default" />
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="No data"/>
</LinearLayout>
这是我的Listview活动
public class LatestMatchesListActivity extends ListActivity {
...
private void createMatchList() {
/*
Log.i(MY_DEBUG_TAG, "Checking Match store size before passing it to custom adapter: "+mStore.size());
if(mStore.size() == 0){
Log.i(MY_DEBUG_TAG, "Got Empty match store, so checking connectivity..");
Match m = new Match();
if(isOnline()){
Log.i(MY_DEBUG_TAG, "Internet is accessible, so adding no matches object: ");
m.setId(-1);
} else{
Log.i(MY_DEBUG_TAG, "No Internet accessible, so adding mo caonnectivity match object: ");
m.setId(-2);
}
mStore.add(m);
} else {
Log.e(MY_DEBUG_TAG, "Match store is not empty ");
}
*/
//mStore.clear();
Log.i(MY_DEBUG_TAG, "Passing match list to custom adapter: "+mStore.toString());
this.mAdapter = new MatchAdapter(this, R.layout.list_matches, mStore);
this.setListAdapter(this.mAdapter);
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setBackgroundDrawable(null);
lv.setBackgroundResource(0);
}
以及自定义的ArrayAdapter
public class MatchAdapter extends ArrayAdapter<Match> {
private ArrayList<Match> items;
private final String MY_DEBUG_TAG = "MatchAdapter";
public MatchAdapter(Context context, int textViewResourceId, ArrayList<Match> items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_matches, null);
}
Match m = items.get(position);
if (m != null) {
TextView itemLabel = (TextView) v.findViewById(R.id.item_match_label);
ImageView imageFlagLeft = (ImageView) v.findViewById(R.id.flag_left);
ImageView imageFlagRight = (ImageView) v.findViewById(R.id.flag_right);
if(m.getId() == -1){
itemLabel.setText("No Live Matches.");
imageFlagLeft.setVisibility(View.INVISIBLE);
imageFlagRight.setVisibility(View.INVISIBLE);
} else if(m.getId() == -2){
itemLabel.setText("No Intenet connectivity.");
imageFlagLeft.setVisibility(View.INVISIBLE);
imageFlagRight.setVisibility(View.INVISIBLE);
} else {
itemLabel.setText(m.getTeam1() + " v/s " + m.getTeam2());
imageFlagLeft.setImageResource(getFlagResource(m.getTeam1()));
imageFlagRight.setImageResource(getFlagResource(m.getTeam2()));
}
}
return v;
}
private int getFlagResource(String teamName) {
Log.i(MY_DEBUG_TAG, "Getting the flag of " + teamName);
String flagString = "flag_" + teamName.replace(" ", "_").toLowerCase();
int resId = getContext().getResources().getIdentifier(flagString, "drawable", "com.itflux.DroidChirp");
if (resId != 0) {
return resId;
}
return R.drawable.flag_default;
}
}