无需在xml文件中写入arraylist。只需创建一个适配器类并在其构造函数中保存带有 arraylist 的上下文。
然后,当您初始化适配器类并通过 getView() 在您的自定义 xml 视图中添加所有数据时,将数组列表数据传递到您的活动中。
编辑
您的适配器类应该类似于(假设您的自定义布局有 2 个视图,即一个文本视图和一个复选框):
public class YourAdapter extends BaseAdapter {
private ArrayList<HashMap<String, String>> mArrayListData= null;
private Context mContext;
//Define your constructor in which you pass your arraylist data with usable activity context
public StatusAdapter(Context mContext, ArrayList<HashMap<String, String>> mArrayListData) {
this.mContext = mContext;
this.mArrayListData= mArrayListData;
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
private class MyViewHolder {
TextView fillData;
CheckBox statusCheck;
MyViewHolder(View v) {
statusCheck = (CheckBox) v.findViewById(R.id.checkit);
fillData = (TextView) v.findViewById(R.id.textViewFillData);
}
}
//Do whatever you want to do with your custom layout here
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
final MyViewHolder holder;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.yourcustomlayout, null);
holder = new MyViewHolder(view);
view.setTag(holder);
} else {
holder = (MyViewHolder) view.getTag();
}
HashMap<String, String> value = new HashMap<String, String>();
value = data.get(position);
holder.fillData.setText(value.get("Your_HashMap_Key");
holder.statusCheck.setText(value.get("Your_HashMap_Key");
holder.statusCheck.setTextColor(Color.CYAN);
return view;
}
}
并在您的活动中使用适当的上下文和您的数组列表数据初始化 youradapter 类,然后将适配器对象用作 listadapter.Somethink 像:
YourAdapter mAdapter = new YourAdapter(YourActivity.this, your_arraylist);
your_list.setAdapter(mAdapter);
注意:这段代码我写得很粗略,如果有驼峰式错误请避免。谢谢