0

ListView で 1 つの問題が発生しています。各項目に動的な TextViews (画像の白いボックス) を含むリスト ビューを生成しています。ListView は、「Model」クラスの ArrayAdapter を使用して設定されます。一部のアイテムには 2 つの白いボックスがあり、一部のアイテムには「モデル」のデータ/カウントに応じてそれ以上のボックスがあります。また、ViewHolder パターンを使用しており、リスト項目の他の状態を維持できます。ただし、これらのボックスは getView() メソッドで動的に追加されます。

だから私の質問は、ListViewがスクロールされたときに、ViewHolderまたはその他の方法を使用してこれらの動的に追加されたTextViewの状態を維持する方法です。

ここに画像の説明を入力

4

2 に答える 2

0

ui から入力したデータの内容を格納するためのリストまたはデータ構造が必要ですSparseArray<ModelUI>。ModelUI クラスには、動的テキスト ボックスからのテキストを格納するための文字列プロパティが必要です。

また、ここでは 2 つのインデックスを処理していることを考慮する必要があります。SparseArray の 1 つのインデックス/キーは、Model オブジェクトのリストの実際のインデックスであり、Listview に表示される項目のインデックスです。

100 項目のリストがあるとします。リストビューには常に 10 項目が表示されます。listView から常に firstVisibleIndex を参照する必要があります。

私の理解が正しければ、テキスト ボックスを編集し、50 項目をスクロールし、編集した項目までスクロールして戻り、テキスト ボックスに正しいテキストが表示されますよね?

于 2013-11-14T13:48:54.787 に答える
0

スクロールするとボックスの数が変わると思いますが、リスト項目に動的なボックスの数を割り当てる必要がありますか?

解決:

  1. リスト項目のボックスのサイズ (つまり) の数を整数配列に設定します。(例: サイズ[位置] = 5)。
  2. リスト アダプタまたはベース アダプタがリスト アイテムをロードする前に、サイズを設定する必要があります。
  3. ベース アダプタの getView() の最後で、以下のコードを修正します。

    for(int i = 0; i< size[position]; i++){
    //generate textview i.e white boxes here
    
    }
    

動的リストで同じ問題が発生しましたが、これで問題は解決しました。

それでも問題が解決しない場合は、コードをここに投稿してください。

于 2013-11-14T10:59:24.470 に答える