安卓的ListView入门
前言
ListView分为了两章,一章入门一章进阶。
安卓的ListView进阶
ListView必要的四个文件
第一个:
ListviewItemTestAdapter.java
引入了listview_item_test.xml,用来设置listview的每个子项
这个是listview的适配器文件,listview设置适配器的时候就需要new出这个文件,然后设置适配器
主要方法:
listviewItemTestAdapter.notifyDataSetChanged();
用来更新适配器的数据。
第二个:
ListViewTest.java
引入了listview_test.xml,获取到布局文件中的listview控件,然后设置list view的内容
listview中的内容需要放在适配器中设置,也就是第一个Java文件中的适配器中。
主要方法:
listview.setAdapter();一个参数,传入一个适配器,也就是new出来的那个适配器
父控件(ListView)------ListViewTest.java和listview_test.xml
这里有三个控件属性
其中,前两个设置了布局,最后一个设置了id,用于获取控件。
在这里,框框中的,只是得到了这个listview控件,然后设置了一个适配器。
33行,创建出了适配器对象,
37-41设置适配器对象的数据,
41调用适配器的方法更新了数据。
子视图(Item)------ListviewItemTestAdapter.java和listview_item_test.xml
第四行设置了这个每个子项的高度只有50dp
第八行设置了id
下面是适配器 适配器类
。
initializeViews()方法用来初始化子项视图的数据
public class ListviewItemTestAdapter extends BaseAdapter {
private List<String> objects;
//设置传入的字符串数据
private Context context;
//设置一个上下文对象
private LayoutInflater layoutInflater;
//设置要传入的子项视图
public ListviewItemTestAdapter(List<String> objects, Context context) {
this.objects = objects;
this.context = context;
this.layoutInflater = LayoutInflater.from(context);
//构造方法
}
//↓这下方三个重构的不重要
@Override
public int getCount() {
return objects.size();
}
@Override
public String getItem(int position) {
return objects.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
//↑这上方三个不重要,一个是得到子项长度,一个是得到子项对象数据(传的是啥就是啥),一个是得到子项ID.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// 判断子项视图有没有传进去,没传进去就传进去
convertView = layoutInflater.inflate(R.layout.listview_item_test, null);
convertView.setTag(new ViewHolder(convertView));
}
initializeViews(position, (ViewHolder) convertView.getTag());
// 初始化了子项视图
return convertView;
}
private void initializeViews(int object, ViewHolder holder) {
//TODO implement
// 下面设置子项视图的各种数据
holder.listviewItem.setText(objects.get(object)); //这里设置了子项中的文本框的文本内容
}
protected class ViewHolder {
private TextView listviewItem;
public ViewHolder(View view) {
// 这个地方获取到了子项视图中的控件对象
listviewItem = (TextView) view.findViewById(R.id.listview_item);
}
}
}
看注释,注释基本上全部写好了。
什么都不懂就模仿几遍,多写就懂了。
这里就是创建了一个适配器的类,然后实例化出来就可以通过listview控件设置适配器了。
运行
主要思想
通过子项视图创建一个自己的适配器,然后实例化适配器,再用listview的设置适配器方法设置适配器。
在适配器的构造方法中要求传入数据,数据是会被更改的,假如数据被更改之后,就可以通过适配器的 ’ 通知数据被改变 notifyDataSetChanged() ’ 方法去更新数据。