1

私はアンドロイドのアプリケーションで作業していますが、何が起こっているのか分からないという状況が 1 つあります。アプリには Fragments と TabHost で作成された 3 つのタブがあり、すべてのタブには特定のコンテンツを含む記事のリストがあります。

最後のタブ内にリストビューがあります。リストビューは 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);  

あなたはアイテムを毎回再追加し続けます。

FragmentTransactionを呼び出すとき.replace()、フラグメント オブジェクトを再インスタンス化するわけではありませんが、FragmentManger はcreateView()、ViewGroup に適切に収まってレイアウトされるように、毎回フラグメントに要求しています。

于 2012-12-20T10:43:32.240 に答える