2016-04-14 6 views
0

特定のアイテムのtextViewの検索方法を教えてください。たとえば、私はいくつかの項目とすべての項目が3つのtextViews(名前、価格、説明)で作られてlistViewを持っています。今私は "価格" textViewの値とupdateView(intインデックス)メソッドの値を変更したいと思います。正しい項目で正しいtextViewを特定するにはどうすればよいですか?ListViewでアイテムの要素を一意に識別する

5つのアイテム(product1、...、product5)があるとします。 今、私は3番目の製品(product3)の価格を更新したいと思います。 私は任意のヒントは素晴らしいことだ

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 
} 

これまで updateView(3) マイupdateView(int型のインデックス)メソッドを呼び出します。私は、通常、これは、次の操作を行うことであろうアプローチD

+0

なぜデータソースを更新せず、アダプタ上で 'notifyDataSetChanged()'を呼び出さないのですか? –

+0

問題は、私がfindViewById(R.id.tvPrice)を実行しようとすると、毎回最初のアイテムのtvPriceが更新されてしまいます。それを制御できないようです...必要なのはすべてですどのtvPriceが1番目のアイテムにあるのか、2番目にあるのかなどを特定し、その特定のtvPriceを呼び出すことができ、そのテキストビューで 'setText()'のように呼び出すことができます...または何かを逃しました –

+0

それよりも簡単な方法です。 ListViewがあなたのために働くようにしましょう。データソース、ArrayList、またはデータソースとして使用しているものを変更してください。 –

答えて

0

方法:

  • あなたのリストアイテムのモデルを作成しましょう。今ではRecyclerViewを使いたい人たちです。コースのモデルは、あなたが表示したいもの(3つの文字列のようなもの)を表すフィールド/変数を持ちます。
  • 実際にユーザーがクリックしたアイテムを追跡するには、getItem(int position)のようなアダプタでカスタムメソッドを呼び出すことで、そのアイテムのID(データベースのこのアイテムを格納しているテーブルのカラム) )実際のアイテムを返します。
  • このgetItemメソッドは、getId()getterメソッドを持つアイテムを返します。
  • カスタムアダプタに渡すリストアイテムを作成するとき、リストアイテムモデルはそのコンストラクタで(id)値を期待しなければなりません(表の実際の値にアクセスする方法が必要になるため)編集する。
  • 次に、クリックしたアイテムのIDを使用してテーブルをクエリして更新し、アダプタを介してビューを自動的に更新します。

私はこれが助けてくれることを願っています!

+0

あなたのご返信ありがとうございますが、ここではonClickメソッドを使用していませんが、GCMを介して新しい価格(それが影響する行のIDと共に)を送り、 'BroadcastReceiver' 。はい、私は自分のCustomAdapterを作成しました。コンストラクタで 'layoutResource'(3つのtextViews)を取得しましたが、項目内のtv-sにアクセスする方法はまだ分かりません。本当に感謝します。例(私はアンドロイド開発に熟練した人ではありません)ありがとうございました。 –

関連する問題