ListView基本使用

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

1.一个为放ListView的xml文件 

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


放listView的xml

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">
	
  	  <ListView
    	    android:id="@+id/lv_list"
    	    android:layout_width="match_parent"
    	    android:layout_height="match_parent">
   	 </ListView>
	</LinearLayout>


ListView 的子布局

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>


ListView基本使用  自布局预览图


代码


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;

        }
    }
}


预览图

         

          ListView基本使用ListView基本使用