ListView基本使用
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; } } }
预览图