2013-10-08 56 views
0

我在我的視圖中有大約100個textviews,它們都顯示了特定於它的id的值。該值正在從程序中的另一個類中設置。Android - 更新文字視圖的大量數據

我正在尋找一個好的解決方案,如何編程這個,而不會拖延程序或充滿內存。

要在TextView中設置一個普通的文本:

public void setSpecificTextView(string myString) 
{ 
    TextView text = (TextView) findViewById(R.id.textView1); 
    text.setText(myString); 
} 

但我有一個像100層集的功能,每個功能都需要每次檢索一個TextView。看起來像糟糕的節目。

還想過如何將textviews分配爲私有屬性,但也似乎混亂。怎麼樣textviews列表或arraylist?但如何知道列表/陣列列表中的哪個項目屬於哪種方法

但由於textviews具有非常具體的名稱,我該如何處理這個最好的方法呢?

編輯:我所有的textviews放入不同tableLayouts和TableRows的TextView的

+1

100 textviews!你真的需要所有這些嗎?我不認爲它很好。你可以使用listview和listview來回收視圖。 – Raghunandan

+0

這是一個視圖,顯示所有需要的數據,這些數據也需要打印出來。所以他們都是重要的 – Pavenhimself

+0

爲什麼不使用listview呢? – Raghunandan

回答

1

如果TextView s爲所有在公共ViewGroup您可以使用getChildCount()getChildAt()通過TextView s到迭代,並設置每個那些文本,而不是尋找每一個使用findViewById

事情是這樣的:

for(int i = 0; i < parent.getChildCount(); i++){ 
    View child = parent.getChildAt(i); 
    if(child instanceof TextView){  
     # ... do something with the text view 
    }    
} 
+0

textviews在不同ViewGroups中,它們在其他視圖組中,最後它們都在linearLayout – Pavenhimself

+1

那麼您可以按照需要遞歸遍歷'ViewGroup':http://stackoverflow.com/a/7484547/220710 –

+0

是這樣的,我正在尋找是的。沒有解決我的問題,但我很確定我的問題是不解決的,我需要重構一些代碼:) – Pavenhimself

0

,並使陣列狀

TextView[] textView = new TextView[]{R.id.textview1, ......}, 
0

與您的自定義適配器使用列表視圖,適配器很容易更新。

+0

我正在使用TableLayouts而不是ListView的。所以我想我無法真正使用自定義適配器? – Pavenhimself

0

從我瞭解的事情是,你可以用一個HashMap來存儲您textviews。通過這樣做,您將能夠快速獲取所需的文本視圖並進行必要的更新。這是你在找什麼?

0

一個listview會給你免費的滾動,這聽起來像你將需要和使用onitemclicklistner而不是一噸onclicklisteners,所以你可以將文本視圖作爲一組而不是單獨處理。我認爲你應該YouTube一個名爲slidenerd.his android video number 80的傢伙,事情很棒。他談得很快並且有一個口音,但是聽起來像你需要的是一個listview適配器或baseadapter,如果你有更復雜的需求,請檢查它。

+0

我沒有使用listView。我在這些TableRows中使用TableLayout和TableRows和TextViews – Pavenhimself

+0

我只能說你可能有onitem ...與表格佈局相關的屬性,如果有人輸入文本然後將其放入數組myarray [index] –