首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SimpleAdapter带来的麻烦

SimpleAdapter带来的麻烦
EN

Stack Overflow用户
提问于 2017-02-19 01:31:56
回答 1查看 78关注 0票数 0

我想当档案经理。这个算法在ArrayAdapter上工作得很好,但是当我在SimpleAdapter下重做时,它停止了正常工作。主要问题是:当我将元素添加到ArrayList中时,它是重复的。我不知道有什么问题。帮帮我。塔克斯。

onActicityCreated方法:

代码语言:javascript
复制
private final String ATTRIBUTE_NAME_TEXT = "text";
private final String ATTRIBUTE_NAME_IMAGE = "image";

private String[] from = {ATTRIBUTE_NAME_TEXT, ATTRIBUTE_NAME_IMAGE};
private int[] to = {R.id.currPath, R.id.imageView};


@Override
public void onActivityCreated(Bundle savedInstanceState){
    super.onActivityCreated(savedInstanceState);

    Log.d(TAG, "Tab created");
    if (savedInstanceState == null) {
        Log.d(TAG, "SIS == null");
        paths.add("/storage/emulated/0/");
        paths.add("/storage/extSdCard/");

        Map<String, Object> m = new HashMap<>();
        ArrayList<Map<String, Object>> data = new ArrayList<>();
        for(int i = 0; i < paths.size(); i++){
            m.put("text", paths.get(i));
            m.put(ATTRIBUTE_NAME_IMAGE, R.mipmap.ic_launcher);
            data.add(m);
        }
        MySimpleAdapter adapter = new MySimpleAdapter(getActivity(), data, R.layout.item, from, to);
        setListAdapter(adapter);//Creating a primary form of application
    }
    else{
        Log.d(TAG, "SIS != null");
        currentPath = savedInstanceState.get(KEY_PATH).toString();
        paths = savedInstanceState.getStringArrayList(KEY_LIST);

        Map<String, Object> m = new HashMap<>();
        ArrayList<Map<String, Object>> data = new ArrayList<>();
        for(int i = 0; i < paths.size(); i++){
            m.put(ATTRIBUTE_NAME_TEXT, paths.get(i));
            m.put(ATTRIBUTE_NAME_IMAGE, R.mipmap.ic_launcher);
            data.add(m);
        }
        MySimpleAdapter adapter = new MySimpleAdapter(getActivity(), data, R.layout.item, from, to);
        setListAdapter(adapter);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-19 01:45:30

要结束这个问题,正如Mike的评论中所提到的,您需要为循环的每次迭代创建一个新的Map实例。

代码语言:javascript
复制
for(int i = 0; i < paths.size(); i++){
    Map<String, Object> m = new HashMap<>();
    m.put(ATTRIBUTE_NAME_TEXT, paths.get(i));
    m.put(ATTRIBUTE_NAME_IMAGE, R.mipmap.ic_launcher);
    data.add(m);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42318394

复制
相关文章

相似问题

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