使用ListVIew 来设置EmptyView的时候须注意:
ListView listview = (ListView) findViewById(R.id.list); View emptyView = findViewById(R.id.empty); ViewGroup parentView = (ViewGroup) listview.getParent(); parentView.addView(emptyView, 2); // 一定要将EmptyView添加到ListView的ParentView上,不然无效果 listview.setEmptyView(emptyView)
如果你直接在XML中包含了emptyView,那么也就不需要再额外添加到Viewhierarchy中了,因为它已经在那儿了。
例:
ListViewApiUseDemoActivity.java
package com.yongdaimi.android.androidapitest;import android.os.Bundle;import android.os.Handler;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.Gravity;import android.view.ViewGroup;import android.view.ViewParent;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.TextView;public class ListViewApiUseDemoActivity extends AppCompatActivity { private ListView lv_list; private TextView tv_empty_view; private ArrayAdapterarrayAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listview_api_use_demo); initView(); /* tv_empty_view = new TextView(this); tv_empty_view.setText("No Data"); tv_empty_view.setGravity(Gravity.CENTER); ViewGroup viewGroup = (ViewGroup) lv_list.getParent(); viewGroup.addView(tv_empty_view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));*/ lv_list.setEmptyView(tv_empty_view); String[] emptyData = new String[]{}; arrayAdapter = new ArrayAdapter (getApplicationContext(), android.R.layout.simple_list_item_1, emptyData); lv_list.setAdapter(arrayAdapter); new Handler().postDelayed(new Runnable() { @Override public void run() { String[] data = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"}; arrayAdapter = new ArrayAdapter (getApplicationContext(), android.R.layout.simple_list_item_1, data); lv_list.setAdapter(arrayAdapter); } }, 1500); new Handler().postDelayed(new Runnable() { @Override public void run() { String[] data = {}; arrayAdapter = new ArrayAdapter (getApplicationContext(), android.R.layout.simple_list_item_1, data); lv_list.setAdapter(null); } }, 4500); } private void initView() { lv_list = findViewById(R.id.lv_list); tv_empty_view = findViewById(R.id.tv_empty_view); }}