-1

カスタム行が入力されたリストビューがあります。各行には、いくつかのデータと、クリックすると緑色に変わる円の画像があります。基本的に、「円の画像が緑色に変わったらこのメッセージが読み取られます」のように「読み取り」ステータスを複製したかったのです。画面にビューを表示するためにベースアダプタを使用しました。なんとか色を緑に変えました。

if(messagealertAdapterObject.status!=null && 
   messagealertAdapterObject.equals("read")) {
    select.setImageResource(R.drawable.greencircle);
}else{
    select.setImageResource(R.drawable.gray);
}

しかし、私の問題は、リストをスクロールして特定の行を選択した後に色が緑色に変更されると、選択した画像がビューから外れると、「未読」ステータスに戻ることです。色は緑色のままではなくなります。見えなくなったら。

「円」が見えなくなっても色を緑色に保つ方法はありますか?

4

2 に答える 2

1

あなたの問題は、スクロール時にビューをリサイクルする ListView の動作に関係していると思います。あなたがする必要があるのは、リストアダプターを拡張し、getViewメソッドをオーバーライドして、選択したアイテムの色の割り当てを処理することです。

詳細については、これこれをお読みください

于 2012-04-20T07:42:08.993 に答える
0
I have understand your problem.

ブール配列リストを維持する必要があり、その中にすべての状態を保存する必要があります。リストビューをスクロールするたびにビューが再作成されるため、ビューの状態を保存する必要があります。私はそれがあなたに役立つと思う例を挙げています。

//maintain a listview in your custom adapter:

private ArrayList<Boolean> itemRead      = null;

//initialize it in your custom adapter constructor:

   for (int i=0; i < no_of_elements.size(); i++)
   {
        itemRead.add(i, false);
   }

getView に次のコードを記述します。

public View getView (int position, View convertView, ViewGroup parent)
{
     //WRITE YOUR CODE

     if (itemRead.get(position) == true)
     {
         //SET YOUR ALREADY READ IMAGE
     } else {
        // SET UNREAD IMAGE
     }
}

人が行を読むたびに、ステータスを itemRead.add(row_position, true) に保存するだけです

ビューを再作成するたびに保存ステータスが取得され、それに応じて画像が設定されるため、これで問題が解決します。それがうまくいくことを願っています..

于 2012-04-20T08:41:51.863 に答える