2016-04-14 65 views
0

你能幫我找到某個項目的textView嗎?例如,我有一個listView與一些項目,每個項目由3個textViews(名稱,價格,描述)。現在我想用updateView(int index)方法更改「price」textView的值。如何在正確的項目中識別正確的textView?在ListView中唯一標識一個項目的元素

比方說,我有5個項目(product1,...,product5)。 現在我想更新第三個產品(product3)的價格。 我打電話updateView(3) 我的UpdateView(INT指數)方法至今

private void updateView(int index){ 
    // thats how I get the row 
    View v = lvProduct.getChildAt(index); 
    // now I want to find the tvPrice in that row 
    // but I'm not sure how to go about this 
} 

任何提示將是巨大的:d

+0

爲什麼不更新數據源並在適配器上調用'notifyDataSetChanged()'? –

+0

問題是,當我試圖做到這一點findViewById(R.id.tvPrice)它更新第一個項目的tvPrice每次,它似乎我不能完全控制它......我需要的是一種方法確定哪個tvPrice在第一個項目中,在第二個項目中等等,然後能夠調用該特定的tvPrice,然後在該文本視圖中調用像'setText()'或者我錯過了什麼 –

+0

有一個比做那一切更容易。讓ListView爲你工作。只需更改數據源,您的ArrayList或您正在用作數據源的任何東西。 –

回答

0

的方式,我通常做法,這將是做到以下幾點:

  • 爲你的列表項目創建一個模型(現在人們更喜歡使用RecyclerView) - 當然模型將有字段/變量表示你想要顯示的內容(比如3字符串)。
  • 現在,爲了實際跟蹤用戶點擊的項目,我可以通過在我的適配器中調用一個自定義方法(如getItem(int position))來簡單地獲取該項目的id(存儲該項目的表的列) )它返回一個實際的項目。
  • getItem方法將使用getId()getter方法向我返回一個項目。
  • 現在注意到當你創建你的列表項目傳遞給你的自定義適配器時,你的列表項目模型必須在它的構造函數中需要一個(id)值,因爲這就是你如何能夠訪問你表格中的實際值編輯。
  • 那麼你可以使用你點擊的項目的ID來查詢你的表格並更新它,並且只需通過你的適配器自動更新視圖。

我希望這有助於!

+0

感謝您的快速回復,但是這裏有個問題,即時通訊並沒有使用'onClick'方法,我通過GCM發送新的價格(以及它所影響的行的id),並用'BroadcastReceiver' 。是的,我做了我自己的CustomAdapter,它在構造函數中獲得了一個'layoutResource'(有三個textViews),但我仍然不明白我如何訪問該項目內的電視節目,並且非常感謝您是否可以爲我提供一個例如(我沒有在android開發中經歷過)非常感謝您花時間幫助。 –