【问题标题】:Write arraylist in XML file在 XML 文件中写入数组列表
【发布时间】:2014-01-28 04:51:42
【问题描述】:

我正在尝试自定义列表视图以添加图像图标和文本视图。我有一个存储的数组列表,需要先将其转换为 XML 文件。请帮我将此数组列表(包含存储在 FTP 服务器上的文件名)写入存储在内部存储中的 xml 文件中。

【问题讨论】:

  • 为什么要转成XML?是为了缓存吗?
  • 因为我无法将我的数组列表直接绑定到自定义列表视图,通过将其写入 xml 文件我可以得到 arraylist>。

标签: android xml listview arraylist hashmap


【解决方案1】:

无需在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);

注意:这段代码我写得很粗略,如果有驼峰式错误请避免。谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    相关资源
    最近更新 更多