Android BaseAdapter Java和xml实例代码并实现监听事件
时间: 2023-07-31 18:03:46 浏览: 53
以下是一个简单的 Android BaseAdapter 的 Java 和 xml 实例代码,并实现监听事件:
Java 代码:
```
public class MyAdapter extends BaseAdapter {
private Context context;
private ArrayList<String> dataList;
public MyAdapter(Context context, ArrayList<String> dataList) {
this.context = context;
this.dataList = dataList;
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return dataList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_layout, parent, false);
holder = new ViewHolder();
holder.textView = convertView.findViewById(R.id.text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
String data = dataList.get(position);
holder.textView.setText(data);
holder.textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 在这里实现点击事件
Toast.makeText(context, "你点击了第 " + position + " 个条目", Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
static class ViewHolder {
TextView textView;
}
}
```
xml 代码:
```
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<TextView
android:id="@+id/text_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="18sp" />
</RelativeLayout>
```
在这个例子中,我们创建了一个名为 MyAdapter 的 BaseAdapter 子类。我们的 Adapter 接收一个 Context 和一个 ArrayList<String> 作为构造函数的参数,并使用它们来实现 getCount()、getItem()、getItemId() 和 getView() 方法。
在 getView() 方法中,我们使用 ViewHolder 模式来优化列表项的加载,如果 convertView 为 null,则使用 LayoutInflater 加载我们在 xml 文件中定义的布局文件,并将 ViewHolder 对象存储在 convertView 的 tag 中以供重用。我们使用数据源 dataList 中的数据填充列表项,并为 textView 设置一个点击事件监听器。
当 textView 被点击时,我们可以在 onClick() 方法中实现所需的操作。在这个例子中,我们只是显示一个 Toast,告诉用户他们点击了第几个条目。
最后,我们在 Activity 中实例化 MyAdapter 并将它传递给一个 ListView 或 GridView。