首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我使用HashMap,我应该如何在BaseAdapter getView()中迭代

如果我使用HashMap,我应该如何在BaseAdapter getView()中迭代
EN

Stack Overflow用户
提问于 2011-03-09 03:33:29
回答 1查看 2.9K关注 0票数 2

我有一个来自BaseAdapter的扩展类,它用作我的ListView的自定义Adapter。如果我使用List<>作为数据集,那么使用getView()方法就不会有任何问题,而且一切都很好-我的列表中填充了来自List的所有数据。但是如果我使用HashMap,这永远不会起作用。据我所知,getView()遍历集合,这在List中工作得很好,因为它是可迭代的。

代码语言:javascript
复制
private class MAdapter extends BaseAdapter {
        private LayoutInflater mInflater;

        public MAdapter(Context context) {
            mInflater = LayoutInflater.from(context);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;

            if (v == null) {
                v = mInflater.inflate(R.layout.list_item, null);
            }

            Task task = taskList.get(position); // works perfect if taskList is List and doesn't work if it is HashMap. What shell I do to use HashMap here?

            if (task != null) {
                TextView tvDescription = (TextView) v
                        .findViewById(R.id.task_text_view);
                TextView tvTime = (TextView) v
                        .findViewById(R.id.time_text_view);

                if (tvDescription != null) {
                    tvDescription.setText(task.getDescription());
                }

                if (tvTime != null) {
                    tvTime.setText(task.showTime());
                }
            }

            return v;
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-09 03:36:57

你不能。BaseAdapter实现了ListAdapter,它被称为ListAdapter是有原因的。为什么要使用HashMap?

更新:

从列表中删除。

代码语言:javascript
复制
for(int j = list.size() - 1; j >= 0; j--){
  Object o = list.get(j);
  if(o.getId().equals(id)) {
    list.remove(o); // find obj and remove
    break;
  }
}
adapter.notifyDataSetChanged(); // update ListView

或者同时保留一个列表和HashMap。我建议只使用列表。

代码语言:javascript
复制
Object o = map.remove(id); // remove object by id
list.remove(o); // remvove object from list
adapter.notifyDataSetChanged(); // update ListView
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5237315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档