0

リスト項目をクリックしたときの背景を変更したいのですが、うまくいきません。

これは私の MusicAdapter 内部クラスです:

class MusicAdapter extends ArrayAdapter<String>{
        Fill fill=null;
        public MusicAdapter(){
            super(GetMusics.this,android.R.layout.simple_list_item_1,song_list);
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub

            row = convertView;
            if(row==null){
                LayoutInflater inflater = getLayoutInflater();
                row = inflater.inflate(R.layout.row, null);
                fill=new Fill(row);
                row.setTag(fill);
            }else{
                fill=(Fill)row.getTag();
            }
            row.setBackgroundResource(R.drawable.list_selector);
            fill.setRow(song_list.get(position));
            return row;
        }
    }

私もこれを試しましたが、やはりうまくいきませんでした:

private AdapterView.OnItemClickListener onItemClick = new AdapterView.OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View v, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        lv.getChildAt(arg2).setBackgroundResource(R.drawable.list_selector);
    }
};

ここに私のlist_selector.xmlがあります:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_focused="true"
        android:drawable="@color/Peru"/>
    <item android:state_pressed="true"
        android:drawable="@color/Tan"/>
    <item
        android:drawable="@color/Peru"/>
</selector>

何か提案はありますか?

4

2 に答える 2

0

onItemClick()すでに背景を変更する必要があるビューを渡します。そこに背景を設定するだけです。

@Override
public void onItemClick(AdapterView<?> arg0, View v, int arg2,
        long arg3) {
    v.setBackgroundResource(R.drawable.list_selector);
}
于 2012-12-20T21:16:49.963 に答える
0

Selectorと呼ばれるものを使用して設定する必要があります。ListSelectorこの質問を参照してくださいAndroid ListView Selector Color

于 2012-12-20T22:47:21.683 に答える