在Android中显示ArrayAdapter的空视图

时间:2015-04-09 10:38:27

标签: android android-arrayadapter android-listfragment

我的应用程序中ListView使用ListFragmentonActivityCreated() 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}}

如果我的适配器中没有任何项目,那么这是否会导致显示空视图?

2 个答案:

答案 0 :(得分:2)

1)尝试将backgroundImage ListView放在xml内。如果没有项目,请显示backgroundImage,如果有项目,请输入背景颜色。

2)您还可以执行自定义视图的@ kgandroid suggestedheresetEmptyView()

示例:

enter image description here

<强>另:

enter image description here

答案 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
}