Android BaseAdapter实例代码
时间: 2023-11-20 16:05:20 浏览: 85
BaseAdapter事例源代码
以下是一个简单的Android BaseAdapter实例代码:
```java
public class MyAdapter extends BaseAdapter {
private Context context;
private ArrayList<String> data;
public MyAdapter(Context context, ArrayList<String> data) {
this.context = context;
this.data = data;
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false);
viewHolder = new ViewHolder();
viewHolder.text = convertView.findViewById(R.id.text_view);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.text.setText(data.get(position));
return convertView;
}
private static class ViewHolder {
TextView text;
}
}
```
在这个例子中,我们创建了一个名为`MyAdapter`的类,它扩展了`BaseAdapter`类。我们需要实现`getCount()`、`getItem()`、`getItemId()`和`getView()`这四个方法。
`getCount()`方法返回数据集合中的项目数。
`getItem()`方法返回指定位置的数据项。
`getItemId()`方法返回指定位置的数据项的ID。
`getView()`方法创建并返回一个View对象,它将用于显示数据。在这个方法中,我们首先检查convertView是否已经存在,如果存在则重用它,否则我们从布局文件中创建一个新的View对象。然后,我们使用ViewHolder模式来优化View的创建和绑定过程,以提高ListView的性能。最后,我们将数据绑定到View对象上,并将其返回。
在这个例子中,我们使用了一个名为`ViewHolder`的私有静态内部类来缓存已经找到的子视图。这样可以避免每次调用getView()时都要调用findViewById()方法来查找子视图,提高了ListView的性能。
阅读全文