2011-05-19 15 views
-1

我有一個活動,我有一個TabHost與兩個選項卡。這兩個選項卡都有一個列表視圖。該活動有一個按鈕,它啓動一個異步作業以從互聯網獲取數據,然後將數據分成兩個陣列適配器,每個列表視圖一個。問題在於,這兩個列表視圖都顯示了第二個適配器的數據。Tabhost與兩個listview與自定義數組適配器,這兩個列表顯示相同的數據

ArrayList<TestClass> detailsToCollect = new ArrayList<TestClass>(); 
ArrayList<TestClass> detailsToGive = new ArrayList<TestClass>(); 
for (TestClass TestClass : details) { 
if(TestClass.getAmount()>0) 
{ 
detailsToCollect.add(TestClass); 
} 
else 
{ 
TestClass.setAmount(TestClass.getAmount()*-1); 
detailsToGive.add(TestClass); 
} 
} 
if(Double.parseDouble(amount)!=0) 
{ 
imgView1.setVisibility(View.VISIBLE); 
downloadFile(GetGraphURL(a, al),imgView1); 
lstView1.setVisibility(View.VISIBLE); 
lstView1.setAdapter(new CustomAdapter(Home.this,R.layout.detailsrow, detailsToCollect)); 
} 
else 
{ 
nodataCollect.setVisibility(View.VISIBLE); 
} 
if(Double.parseDouble(amountc)!=0) 
{ 
imgView2.setVisibility(View.VISIBLE); 
downloadFile(GetGraphURL(ac, alc),imgView2); 
lstView2.setVisibility(View.VISIBLE); 
lstView2.setAdapter(new CustomAdapter(Home.this,R.layout.detailsrow, detailsToGive)); 
} 
else 
{ 
nodataGive.setVisibility(View.VISIBLE); 
} 

有人可以告訴我這裏有什麼問題嗎? 謝謝, Ashwani

+0

我在您的發佈代碼中看不到問題,您是否修改了它以在此處發佈?也許問題出在其他地方,或許是爲getToGive和detailstoCollect創建一個getter和setter方法,然後添加Log.d()來檢查它們是否按預期方式調用 – Jodes 2011-05-19 16:44:51

+0

您好,我調試了代碼,這兩個arraylist都有不同的元素,但綁定後,兩個列表視圖都具有相同的數據。 – 2011-05-19 17:56:27

回答

0

我已經通過處理tabhost的setOnTabChangedListener來解決了這個問題。在這個監聽器中,我再次將列表視圖綁定到它們相應的適配器。

public void onTabChanged(String arg0) { 

        int type = arg0=="tab_1"?1:0; 
        switch (type) { 

        case 1: 
         lstView1.setAdapter(ListView1Adapter); 
          break; 

        default: 
         lstView2.setAdapter(ListView2Adapter); 
         break; 
        } 

       } 
0

我有一個類似的問題:Tab Host List Adapter and Lists,我並沒有完全解決,但還沒有一個想法是,我的佈局變得更好,我把一個不透明的背景(圖像)的的每一個後名單。之前,我曾經看過4個列表,但現在我只看到一個,所以也許你的問題也可以通過這種方式來解決。

+0

我已通過處理setOnTabChangedListener並在選項卡單擊上設置適配器來修復了此問題。 – 2011-05-25 05:43:26

相關問題