1

我在android中的一个应用程序上工作,我遇到了一种我无法弄清楚发生了什么的情况。该应用程序有 3 个标签,由 Fragments 和 TabHost 创建,每个标签都有一个包含特定内容的文章列表。

我在最后一个选项卡中有一个列表视图。列表视图是使用 listAdapter 创建的,并且是从一个 drupal 视图中填充的。一切都很完美,但是当我更改选项卡并返回初始选项卡时,列表视图的项目会重复。

标签内容的代码是:

   httpconnect httpcon = new httpconnect();   
   ArrayList<HashMap<String, String>> articleList = new ArrayList<HashMap<String, String>>();  
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
          if (container == null) { 
             return null;
          } 
             View v = inflater.inflate(R.layout.recomandate, container, false);   
             list=(ListView) v.findViewById(R.id.list); 
             infoGet();  
             return v;  
    }


    public void infoGet() { 
            try {   
                JSONArray jArray = new JSONArray(httpcon.connectareHttp(url));  

           for(int i=0; i<jArray.length(); i++) { 
               HashMap<String, String> map = new HashMap<String, String>();
             JSONObject json = jArray.getJSONObject(i);             

                String id; 
                   id = json.getString("nid"); 
                    map.put(KEY_ID, id);  

                 String articleTitle; 
                  articleTitle= json.getString("title"); 
                    map.put(KEY_TITLE, articleTitle);

                  String content; 
                    content= json.getString("body"); 
                      map.put(KEY_BODY, content);

                   String img; 
                     img = json.getString("field_image"); 
                       map.put(KEY_THUMB_URL, img); 

                  articleList.add(map);  
           }

                adapter = new ListAdapter(getActivity(), articleList);  
                  list.setAdapter(adapter);  

        }   catch (Exception e) {

                    Log.e("log_tag", "Error Parsing Data "+e.toString());
                    } 

    }

当我在选项卡之间切换时,如何不重复列表视图中的项目?

提前感谢您的帮助!

问候,科索!

4

1 回答 1

2

你的答案在这里:

         articleList.add(map);  

您每次都会重新添加项目。

当您调用.replace()FragmentTransaction 时,您并没有重新实例化片段对象,而是 FragmentMangercreateView()每次都要求片段以确保它适合并在 ViewGroup 上正确布局。

于 2012-12-20T10:43:32.240 回答