我的应用程序中ListView
使用ListFragment
在onActivityCreated()
setListAdapter()
中呈现了setListAdapter()
。传递给此ArrayAdapter
的是我ListActivity
的实现。在某些时候,这个适配器可能是空的,这很好,但在那些时刻,我想在列表中显示一条消息,告诉没有项目,而不仅仅是一个空视图。但是我真的不知道如何实现这一目标,因为我已经研究了大多数人在setEmptyView()
中显示列表,并且通过这样做你可以ListFragment
,但这似乎并不现代使用ListFragment
时可行。另一种方法是在ArrayAdapter
中更改视图,如果setEmptyView()
中没有项目,则将视图更改为显示该消息的另一个视图,但这在我看来有点hacky
真的是做我想做的事的正确方法吗?
尝试ListView
到我的ListFragment
,但这也不起作用,请参阅有关我的public class MyFragment extends ListFragment {
@SuppressLint("InflateParams")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ListView listView = (ListView) inflater.inflate(R.layout.my_list, null);
listView.setEmptyView(inflater.inflate(R.layout.list_items_missing, null));
return listView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
MyItemArrayAdapter adapter = new MyItemArrayAdapter(getActivity());
// Populate adapter with items...
setListAdapter(adapter);
}
}
中观看次数如何膨胀的代码:
{{1}}
如果我的适配器中没有任何项目,那么这是否会导致显示空视图?
答案 0 :(得分:2)
1)尝试将backgroundImage
ListView
放在xml
内。如果没有项目,请显示backgroundImage
,如果有项目,请输入背景颜色。
2)您还可以执行自定义视图的@ kgandroid suggested和here,setEmptyView()
。
示例:强>
<强>另:强>
答案 1 :(得分:0)
您可以自定义适配器,以便在R.layout.list_items_missing
时显示布局(item == null)
,而不是夸大您实施的常规自定义列表项布局。
这样的事情:
public View getView(int position, View convertView, ViewGroup parent)
{
ViewHolder holder; //asuming you have this in your custom adapter
if (convertView == null) {
holder = new ViewHolder();
if(MyItemArrayList.get(position)!=null)
{
convertView = this.inflater.inflate(R.layout.layout_list_item,
parent, false);
else
{
convertView = this.inflater.inflate(R.layout.list_items_missing,
parent, false);
}
//the rest of the adapter logic
}