随手记之liistview之setEmptyView(view)

来源:互联网 发布:linux的运行级别 编辑:程序博客网 时间:2024/04/28 17:09
无聊的时候就只有学习学习再学习,周末天太热,无处可去就只有在家看书了,以前没有注意过在listview的适配过程中,没有数据时的情况,今天翻书的过程中偶尔发现liistview在没有数据的时候是可以设置空view来和用户进行交互的,可以根据需要设置成更加有趣味的交互行为哦。下面上代码:
public class MainActivity extends Activity {    ArrayList list = new ArrayList();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        final ListView listView = (ListView) findViewById(R.id.list);        TextView textView = (TextView) findViewById(R.id.tv);        final MyAdapter adapter = new MyAdapter(this,list);        listView.setAdapter(adapter);        if (list.size() == 0){            listView.setEmptyView(textView);            list.add("111111111");            list.add("22222222222");            list.add("3333333333");            list.add("44444444444");            textView.setOnClickListener(new View.OnClickListener(){                @Override                public void onClick(View v) {                    adapter.notifyDataSetChanged();                }            });        }    }    class MyAdapter extends BaseAdapter{        private ArrayList list;        private Context context;         MyAdapter(Context context,ArrayList list){            this.list = list;             this.context = context;        };        @Override        public int getCount() {            return list.size();        }        @Override        public Object getItem(int position) {            return null;        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder;            if (convertView == null){                holder = new ViewHolder();                convertView = LinearLayout.inflate(context,R.layout.row_item_layout,null);                holder.left = (ImageView) convertView.findViewById(R.id.left);                holder.right = (ImageView) convertView.findViewById(R.id.right);                holder.textView = (TextView) convertView.findViewById(R.id.list_tv);                convertView.setTag(holder);            }else{                holder = (ViewHolder) convertView.getTag();            }            holder.textView.setText(list.get(position).toString());            return convertView;        }    }    class ViewHolder {        ImageView left;        ImageView right;        TextView textView;    }}

布局文件如下:

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="com.example.mhyuam.emptyadapterview.MainActivity">    <TextView        android:id="@+id/tv"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="Hello World!"        android:visibility="gone"/>    <ListView        android:id="@+id/list"        android:layout_width="match_parent"        android:layout_height="wrap_content">    </ListView></RelativeLayout>

下面的是一个自定义的drawable

<?xml version="1.0" encoding="utf-8"?><shape  xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">    <gradient        android:startColor="#EFEFEF"        android:endColor="#000000"        android:angle="225"        android:type="linear"/></shape>
很容易理解,android:shape="rectangle"表示的是自定义的drawable的形状,下面是开始颜色和结束颜色,android:angle="225"表示的是渐变的方向,android:type="linear"线性渐变,其中还有一个属性android:centerColor="",这个就不言而喻了吧。
0 0
原创粉丝点击