-4

これは私のコードです。ここでは、選択した行の背景色が変化しています。しかし、スクロールした後、選択されていないビューの背景色も変更されます。この問題を防ぎたいです。何か助けはありますか?

  public class ListDemoActivity extends ListActivity {
         String[] names = {
                    "Dwight",
                    "Kennedy",
                    "Johnson",
                    "Richard",
                    "Gerald",
                    "Jimmy",
                    "Ronald",
                    "George",
                    "Bill",
                    "B. Bush",
                    "Rana"
            };
         View view;
         int posn = -1;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, names));
        }
        @Override
        protected void onListItemClick(ListView l, View v, int position, long id) {



    Log.i("Log", "Clicked posn"+position);
    Log.i("Log", "id is: "+id);
    if(posn == -1)
    {
        v.setBackgroundResource(R.color.blue);
    //  l.getChildAt(position).setBackgroundResource(R.color.blue);
        view = v;
        posn = position;    
    }
    else if (posn == position)
    {
        v.setBackgroundResource(R.color.blue);
        //l.getChildAt(position).setBackgroundResource(R.color.blue);
    }
    else
    {
        Log.i("Log", "Count of child:  "+l.getChildCount());
    //  View view = l.getChildAt(posn);
    //  Log.i("Log", "Position: "+view.)
        //view.setBackgroundResource(R.color.black);

        //view = l.getChildAt(position);
        //view.setBackgroundResource(R.color.blue);

        view.setBackgroundResource(R.color.black);
        v.setBackgroundResource(R.color.blue);
        view = v;
        posn = position;
    }
    }
}
4

1 に答える 1

1

これは、ListViewがアダプターを介してセルを再利用するために発生します。セルをスクロールして表示されないようにすると、セルは下部に配置されるため、青色に色を付けてスクロールすると、セルが下に表示されます。

どのセルに色を付けたいかを追跡し、それに応じgetView(..)てオーバーライドする必要のあるメソッドで色を付ける、単純なカスタムアダプターを作成できます。ListViewsのこのビデオも参照してください。

于 2012-06-26T07:33:38.890 に答える