ListView基本使用

来源:互联网 发布:开票软件金税盘版官网 编辑:程序博客网 时间:2024/06/05 07:03

Android ListView 使用需要 俩个xml文件:

1.一个为放ListView的xml文件 

2.第二个是为显示listview张什么样的xml文件


放listView的xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ListView        android:id="@+id/lv_list"        android:layout_width="match_parent"        android:layout_height="match_parent">    </ListView></LinearLayout>


ListView 的子布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <ImageView       android:id="@+id/iv_view"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@mipmap/ic_launcher" />    <TextView         android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_margin="6dp"        android:text="haha" /></LinearLayout>


  自布局预览图


代码


public class DemoListView extends Activity {    private ListView listView;    List<String > lists = new ArrayList<>();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_list);        listView = (ListView) findViewById(R.id.lv_list); // setContentView中的布局中找到ListView        initData();  // 在这里进行填充数据源        /**         * 1. 设置适配器需要一个adapter         * 2. adapter需要extends(继承)BaseAdapter         * 3.创建类extends(继承)BaseAdapter         * 4.实例化adapter类给   listView.setAdapter();         */        MyAdapter mAdapter = new MyAdapter();        listView.setAdapter(mAdapter); // ListView设置适配器    }    private void initData() {        for (int i = 0;i<100;i++){            lists.add("android"+i+"机器人");        }    }    class MyAdapter extends BaseAdapter{        @Override        public int getCount() {  // ListView的条目数量            return lists.size();  // 这里一般都是集合的size        }        @Override        public Object getItem(int position) {  //获取数据集中与指定索引对应的数据项)            return null;        }        @Override        public long getItemId(int position) { // 取在列表中与指定索引对应的行id            return 0;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {   // 填充ListView的条目             ViewHolder holder;            if(convertView ==null){  // convertView, 进行复用                convertView = View.inflate(DemoListView.this,R.layout.activity_list_time,null);  // View.inflate添加ListView的 条目布局                holder = new ViewHolder();                holder.tv = (TextView) convertView.findViewById(R.id.tv);                holder.iv = (ImageView) convertView.findViewById(R.id.iv_view);                convertView.setTag(holder);            }else {                holder  = (ViewHolder) convertView.getTag();            }            holder.tv.setText(lists.get(position));  // 给自条目的TextView 赋值            return convertView;  // 切记一定要记得返回 convertView 不然会报错        }        // ListView条目布局添加背包 这样减少 findViewById 的次数 这样ListView自条目 空间过多也不会卡顿        class ViewHolder{            TextView tv;            ImageView iv;        }    }}


预览图