1

私のアプリケーションでは、ListView. 実際、私はプレーンな ListView を持っていません。その中からメソッドListFragmentを介して ListView を取得しています。getListView()次のようにプログラムでセレクターを適用しました。

ListView listview = getListView();
listview.setSelector(R.drawable.tablet_settings_list_selector);

リストセレクターxmlは次のようになります。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false" android:state_focused="false"
    android:drawable="@drawable/tablet_menu_panel" />
<item android:state_pressed="true" android:state_focused="true"
    android:drawable="@drawable/tablet_menu_panel_ontap" />
<item android:state_activated="true"
    android:drawable="@drawable/tablet_selected_menu" />
</selector>

これは私のリストがどのように見えるかです:

選択した項目の背景が異なる ListView

ご覧のとおり、選択されたリスト項目には、外向きの矢印が付いた異なる背景があります。では、どうすればこれを達成できますか?

4

1 に答える 1

0

ListView最後に、またはで永遠に選択されたアイテムを設定することはできないという結論に達しましたListFragment。そのために、カスタムBaseAdapterを作成し、問題を解決しました:)同様の問題に直面している人のために、ここに私のBaseAdapterがあります。getView ()メソッドに焦点を当てます。

public class ListFragmentListAdapter extends BaseAdapter {

String[] items;
Context _context = null;
private TabletFragment _tabletFragmentChild;

public ListFragmentListAdapter(Context context, TabletFragment tabletFragmentChild, String[] items) {
    this.items = items;
    this._context = context;
    this._tabletFragmentChild = tabletFragmentChild;
}

    //---------------------MOST IMPORTATNT PART----------------------
@Override
public View getView(int position, View convertView, ViewGroup parent) {
    if (convertView == null) {
        convertView = LayoutInflater.from(_context).inflate(R.layout.tablet_listfragment_list_item, null);
    }

    TextView textview = (TextView) convertView.findViewById(R.id.tv_listfragment_list_item);
    textview.setText(items[position]);

    convertView.setBackgroundDrawable(null);
    textview.setTextColor(_context.getResources().getColor(R.color.white));

    if(position == _tabletFragmentChild.getSelectedItemIndex()){
        convertView.setBackgroundResource(R.drawable.tablet_selected1_menu);
        textview.setTextColor(Color.BLACK);
    }
    return convertView;
}
    //------------------------END OF IMP PART0------------------------

@Override
public long getItemId(int position) {

    return position;
}

@Override
public Object getItem(int position) {
    return items[position];
}

@Override
public int getCount() {

    if (items == null)
        return 0;

    return items.length;
}
}
于 2012-08-23T06:25:10.777 に答える