📅  最后修改于: 2023-12-03 14:39:12.123000             🧑  作者: Mango
在Android开发中,ListView、GridView等控件都需要通过适配器(Adapter)来显示数据。有时候,我们需要传递多个参数给适配器,在显示数据时才能更准确、灵活地呈现数据。
本文将介绍如何将多个参数绑定到适配器,并在ListView中展示数据。
首先,我们需要定义一个Java类,用于存储我们要传递的参数,例如:
public class Data {
private String name;
private String age;
public Data(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
接下来,我们需要定义一个继承自BaseAdapter的适配器,例如:
public class MyAdapter extends BaseAdapter {
private Context mContext;
private List<Data> mDataList;
public MyAdapter(Context context, List<Data> dataList) {
mContext = context;
mDataList = dataList;
}
@Override
public int getCount() {
return mDataList.size();
}
@Override
public Object getItem(int position) {
return mDataList.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) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_layout, null);
holder.nameTextView = (TextView) convertView.findViewById(R.id.name_text_view);
holder.ageTextView = (TextView) convertView.findViewById(R.id.age_text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Data data = mDataList.get(position);
holder.nameTextView.setText(data.getName());
holder.ageTextView.setText(data.getAge());
return convertView;
}
private static class ViewHolder{
TextView nameTextView;
TextView ageTextView;
}
}
最后,我们需要在Activity或Fragment中绑定适配器,例如:
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private List<Data> mDataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view);
mDataList = new ArrayList<Data>();
for (int i = 0; i < 10; i++) {
mDataList.add(new Data("name " + i, "age " + i));
}
MyAdapter adapter = new MyAdapter(this, mDataList);
mListView.setAdapter(adapter);
}
}
至此,便完成了在ListView中通过适配器传递多参数的操作。
本文介绍了如何在Android中通过适配器绑定多个参数,并在ListView中展示数据。实现的关键在于定义一个Java类来存储参数,然后通过适配器将参数绑定到控件上。
代码片段如下:
public class Data {
private String name;
private String age;
public Data(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public String getAge() {
return age;
}
}
public class MyAdapter extends BaseAdapter {
private Context mContext;
private List<Data> mDataList;
public MyAdapter(Context context, List<Data> dataList) {
mContext = context;
mDataList = dataList;
}
@Override
public int getCount() {
return mDataList.size();
}
@Override
public Object getItem(int position) {
return mDataList.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) {
holder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_layout, null);
holder.nameTextView = (TextView) convertView.findViewById(R.id.name_text_view);
holder.ageTextView = (TextView) convertView.findViewById(R.id.age_text_view);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
Data data = mDataList.get(position);
holder.nameTextView.setText(data.getName());
holder.ageTextView.setText(data.getAge());
return convertView;
}
private static class ViewHolder{
TextView nameTextView;
TextView ageTextView;
}
}
public class MainActivity extends AppCompatActivity {
private ListView mListView;
private List<Data> mDataList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.list_view);
mDataList = new ArrayList<Data>();
for (int i = 0; i < 10; i++) {
mDataList.add(new Data("name " + i, "age " + i));
}
MyAdapter adapter = new MyAdapter(this, mDataList);
mListView.setAdapter(adapter);
}
}