1. 自定义数据模型:
首先,定义一个数据模型类,例如:
public class ListItem {
private String title;
public ListItem(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
}
2. 创建自定义适配器:
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
public class CustomAdapter extends BaseAdapter {
private Context context;
private List<ListItem> dataList;
public CustomAdapter(Context context, List<ListItem> 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 viewHolder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.list_item_layout, parent, false);
viewHolder = new ViewHolder();
viewHolder.titleTextView = convertView.findViewById(R.id.titleTextView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
ListItem listItem = (ListItem) getItem(position);
viewHolder.titleTextView.setText(listItem.getTitle());
return convertView;
}
static class ViewHolder {
TextView titleTextView;
}
}
3. 使用 ViewHolder 模式:
在 getView 方法中使用 ViewHolder 模式,通过缓存视图的引用避免频繁的 findViewById 调用,提高性能。
4. 在布局文件中定义列表项的布局:
例如,创建一个 list_item_layout.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="wrap_content"
android:orientation="vertical"
android:padding="16dp">
<TextView
android:id="@+id/titleTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
5. 在 Activity 中使用自定义适配器:
import android.os.Bundle;
import android.widget.ListView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
List<ListItem> dataList = new ArrayList<>();
dataList.add(new ListItem("Item 1"));
dataList.add(new ListItem("Item 2"));
dataList.add(new ListItem("Item 3"));
CustomAdapter adapter = new CustomAdapter(this, dataList);
ListView listView = findViewById(R.id.listView);
listView.setAdapter(adapter);
}
}
这个示例演示了如何使用 BaseAdapter 结合 ViewHolder 模式来创建一个自定义适配器,提高列表性能。通过这种方式,可以有效减少不必要的布局加载和资源查找操作,更好地支持列表的复用。
转载请注明出处:http://www.pingtaimeng.com/article/detail/15142/Android