2012-06-12 33 views
0

我無法從尋找基於其實際ID喜歡這個 -Android:如何使用for循環來查找幾個textViews的文本值?

TextView updateText = (TextView)findViewById(R.id.courtText1); 

每個視圖基礎上的「我」在我的循環,像這個 -

當前值算出每個視圖會
for(int i=1; i<3; i++){ 
    TextView updateText = (TextView)findViewById(R.id.courtText"i"); 
} 

這裏是佈局XML的

<TableLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:padding="2dp" > 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="2dp" 
       android:background="@drawable/row_background" 
       android:clipToPadding="true" 
       android:padding="5dp" android:onClick="goToDetail"> 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <TextView 
         android:id="@+id/courtText1" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Moscone Rec Center" 
         android:textColor="#D8D8D8" 
         android:textSize="20dp" /> 

        <TextView 
         android:id="@+id/updateText1" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 

        <TextView 
         android:id="@+id/timeText1" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 

       </LinearLayout> 

       <ImageButton 
        android:id="@+id/imageButton2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@android:drawable/ic_dialog_map" android:onClick="goToMap"/> 

       <ImageButton 
        android:id="@+id/imageButton3" 
        android:layout_width="50dp" 
        android:layout_height="50dp" 
        android:src="@android:drawable/ic_menu_share" android:onClick="shareUpdate"/> 

      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="2dp" 
       android:background="@drawable/row_background" 
       android:clipToPadding="true" 
       android:padding="5dp" > 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <TextView 
         android:id="@+id/courtText2" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Joe Dimaggio" 
         android:textColor="#D8D8D8" 
         android:textSize="20dp" /> 

        <TextView 
         android:id="@+id/updateText2" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 

        <TextView 
         android:id="@+id/timeText2" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 
       </LinearLayout> 
       <ImageButton 
        android:id="@+id/imageButton2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@android:drawable/ic_dialog_map" /> 

       <ImageButton 
        android:id="@+id/imageButton3" 
        android:layout_width="50dp" 
        android:layout_height="50dp" 
        android:src="@android:drawable/ic_menu_share" /> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="2dp" 
       android:background="@drawable/row_background" 
       android:padding="5dp" > 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <TextView 
         android:id="@+id/courtText3" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Brentwood Rec Center" 
         android:textColor="#D8D8D8" 
         android:textSize="20dp" /> 

        <TextView 
         android:id="@+id/updateText3" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 

        <TextView 
         android:id="@+id/timeText3" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 
       </LinearLayout> 
       <ImageButton 
        android:id="@+id/imageButton2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@android:drawable/ic_dialog_map" /> 

       <ImageButton 
        android:id="@+id/imageButton3" 
        android:layout_width="50dp" 
        android:layout_height="50dp" 
        android:src="@android:drawable/ic_menu_share" /> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_margin="2dp" 
       android:background="@drawable/row_background" 
       android:padding="5dp" > 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Can't find your court?" 
         android:textColor="#D8D8D8" 
         android:textSize="20dp" /> 
        <TextView 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="Let us know" 
         android:textColor="#D8D8D8" 
         android:textSize="15dp" /> 

        <ImageButton 
         android:id="@+id/imageButton4" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:src="@android:drawable/ic_dialog_email" android:onClick="createSupportEmail"/> 

       </LinearLayout> 
      </TableRow> 
     </TableLayout> 

如何找到每個項目的一個循環的價值有什麼想法?

+0

我不認爲你應該使用具有相同ID的多個視圖。另外我認爲你應該使用更多的描述性ID。如果您有太多的視圖以至於無法使用描述性ID,則應該問自己,如果使用適配器和數據源是更好的選擇。 – FoamyGuy

回答

3

給你的容器(LinearLayout)一個id,並遍歷它的子元素。

LinearLayout container = (LinearLayout) findViewById(R.id.whatever); 
TextView updateText; 

for (int i = 0; i < container.getChildCount(); i++) { 
    updateText = (TextView) container.getChildAt(i); 
    // Do something to `updateText` 
} 

更新:這對於這種類型的事情一般的成語。我只是更仔細地研究了你的代碼,如果我明白你在這種情況下要做的是什麼,那麼你需要遍歷表格行並針對每行的具體TextArea進行一些操作。如果是這樣,那麼,而不是courtText1courtText2等,你應該擺脫的數量。每行有一個,一個upateText和一個timeText。然後做這樣的事情:

TableLayout table = (TableLayout) findViewById(R.id.give_it_an_id); 
TextView courtText; 

// For each row 
for (int i = 0; i < table.getChildCount(); i++) { 
    // Get the one `courtText` in this row 
    courtText = table.getChildAt(i).findViewById(R.id.courtText); 
    if (courtText != null) { 
     // Do something to `courtText` 
    } 
} 
+0

非常感謝,這幫了很多!這使我可以使用每行中的一個文本元素的值來查詢數據庫。但是,現在我無法使用查詢中檢索到的對象來更新其他文本元素。發佈一個新問題 - http://stackoverflow.com/questions/11060499/how-to-use-data-provided-in-a-getcallback-outside-of-the-getcallback – gregamariani

0

既然你知道你有多少,知道的ID ...你可以很容易地做這樣的事情,

for (int id : new int[] {R.id.courtText1, R.id.timeText1, R.id.updateText1, R.id.courtText2, R.id.timeText2, R.id.updateText2}) { 
    TextView tv = (TextView)findViewbyId(id); 
    // do something with the view 
} 

但是,也許如果你有一堆重複的結構,那麼也許定製AdapterGridView會更好。