2016-05-13 8 views
0

私はこれらのタイプの質問を多く見つけましたが、答えのどれもが私の問題を解決しませんでした。カスタムリストのTextViewは、スクロール中に内容が失われます

私はモバイルショッピングアプリケーションモデルを開発中です。 ListViewImageViewEditText(数量)、2 Buttons、数量を増減するには3 TextView、商品名には2つ、その他の2つは価格に基づいて動的にロードしています。要件をJavaコードで取得し、BaseAdapterおよびgetView()を拡張したCustomAdapter(Class)を使用して実装しています。

問題1:私は条件if(convertView==null), setTag(holder)getTag()を使用する場合

、動的にロードされたボタンが重複して取得され、数が倍増します。

問題2:

カスタムListViewをスクロールしながらそのTextViewに、私は、実行時にデータを変更していないため、他のTextView(名前は)結構ですしながら、私はTextView Sの2に私のデータを失うています。他の2つのTextView(価格)では、ButtonClicks(増減)を使用してランタイム時のデータを変更します。そのとき、2つのTextViewをスクロールすると、その内容は失われます。実際に私はEditText(数量表示)で同じ問題を抱えていましたが、値を取得して配列に渡してもう一度設定することでTextWatcherを使って解決しました。私はTextViewのために同じテクニック(すなわち、TextWatcher)を使用しました。しかし、それは助けになりませんでした。私はまた、TextWatcherを削除し、配列でテキストを設定し、TextWatcherを追加しようとしました。それでも私はそれらのコンテンツを失っていますTextView s

任意の提案??????

+0

は、私はそれと更新をしようと北韓、stackoverflowのは私がこのような長いコード:( –

+0

のrecyclerviewを使用するようにしてください –

+0

@shayanpourvatanを投稿する代わりに、リストビュー – Joshua

答えて

0

問題1: ViewHolder(setTag()、getTag())を使用している間、ビューを再利用します。 例:10個のリストビュー項目があり、画面に3つの項目を同時に表示できるとします。リスト項目1に2つのボタンを追加します。最初にリストビューをロードすると2つのボタンが表示されます。下にスクロールしてリスト項目1に戻ります。ビューを再利用しているので、すでに2つのボタンがあり、getTag()を使用してボタンを追加するコードがあれば、さらに2つのボタンが追加されます。私はこれがボタンの重複の問題を引き起こしていると思う。リスト項目1、リスト項目4、リスト項目7、リスト項目10は、この例の画面では3つの項目しか表示できないため、すべての項目が同じビューを使用します。

問題2: これらのテキスト値をすべてarrayListに格納することをお勧めします。 たとえば、インクリメント/デクリメントできる各リスト項目内にtextViewが1つあるとします。 textWatcherをこのtextViewに設定し、テキストの変更があった場合は、 'position'をインデックスとして使用してarrrayListに追加します。 GetTag()内でgetViewメソッドを使用すると、存在する場合、以前に保存されたテキスト(arrayList内に格納されていた)を使用してtextViewを設定しようとします。

+0

問題2について、私はあなたの提案を既に疲れさせています。それはEditTextのために働いたが、TextViewのために働かなかった:(そして、あなたの提案がEditTextのために働くとき、それはなぜTextViewのために働いていないのだろうか? – Joshua

+0

問題1については、 – Joshua

+0

私は重複問題(すなわち、問題1)を解決しました。ありがとう:) – Joshua

関連する問題