0

現在クリックされているアイテムを、このように実装した別の色に設定したいと思います。

@Override
public void onItemClick(StaggeredGridView parent, View view, int position,
        long id) {
    Toast.makeText(MainActivity.this, "Clicked Position "+position, Toast.LENGTH_LONG).show();
    Log.d("Clicked","Clicked Position "+position+" Content "+contentList.get(position));
    if(prevSelected !=null)
    {
        prevSelected.setBackgroundColor(getResources().getColor(android.R.color.white));

    }
    prevSelected = view;
    view.setBackgroundResource(R.drawable.list_pressed_holo_light);
    selectedPosition = position;
} 

今私が直面している問題は、この選択されたビューが getView() でリサイクルされる場合、それらのビューもすべて同じ背景を持つことです。背景を変更すると、このビューの背景も変更されます。誰でもこれに対する解決策を持っています。

4

4 に答える 4

0

私の友人がこのサイトにアクセスするのはとても簡単で、あなたはあなたの答えを見つけるでしょう.

クリックしたときにアイテムの色を変更し、リストビュー内のテキストの色も変更します

于 2013-06-19T13:29:18.897 に答える
0

これは、getView() で最終的に解決したソリューションです。

            if (convertView != null){
            // If the selected view is used somewhere else
            if (convertView.equals(prevSelected) && position != selectedPosition)
            {
                convertView.setBackgroundColor(getResources().getColor(android.R.color.white));
                Log.d("Yup", "Changing color");
                Log.d("Yup", position + "  " + selectedPosition);
            }
            // If the selected view is redrawn and the recycled view is not
            // the same view again
            else if (position == selectedPosition && !convertView.equals(prevSelected))
            {
                // Make all other views if any which were prev selected
                // white
                prevSelected.setBackgroundColor(getResources().getColor(android.R.color.white));
                prevSelected = convertView;
                convertView.setBackgroundResource(R.drawable.list_pressed_holo_light);
                Log.d("Yup", "Setting pressed color");
                Log.d("Yup", position + "  " + selectedPosition);
            }
            // The case where pos == selected pos and same view was used
            // again.Need to set it to that colour as it could have been
            // changed in the first condition
            else if(position == selectedPosition && convertView.equals(prevSelected))
            {
                prevSelected = convertView;
                convertView.setBackgroundResource(R.drawable.list_pressed_holo_light);
                Log.d("Yup!", "Setting that view colour");
                Log.d("Yup!", position + "  " + selectedPosition);
            }
            }
于 2013-06-20T15:24:27.513 に答える