在自定义适配器中更改参数

时间:2011-11-17 09:20:57

标签: android adapter

我有一个带有自定义CursorAdapter的ListView。在CursorAdapter的参数之间我有主题,CursorAdapter设置了传递主题的颜色。

private MyCustomAdapter mAdapter;

public void onCreate(Bundle savedInstanceState) {
    ListView lv = (ListView)findViewById(R.id.myList);
    mAdapter =  new MyCustomAdapter(
        this, 
        R.layout.my_list_row, 
        null, // cursor set later by cursorloader
        mTheme); //int selected theme
    lv.setAdapter(mAdapter);
}

用户可以从首选项更改主题,在onResume()中我检查主题是否已更改,在这种情况下实际上我重复上面的代码,创建一个新的MyCustomAdapter。

我的问题是:我可以使用现有的适配器更改一个参数并更新吗?例如,当光标改变时,我使用

mAdapter.swapCursor(cursor);

1 个答案:

答案 0 :(得分:1)

getView()的{​​{1}}中设置主题, 然后你可以打电话

Adapter
adapter.notifyDataSetChanged(); onResume()中的

但请确保将主题设置为为单个行设置视图数据的方式。

例如:

Activity

public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = mInflater.inflate(R.layout.item1, null); holder = new ViewHolder(); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } // your data for row implementation goes here // and also your theme implementation goes here // maybe some Method to set Theme if(savedTheme == Constants.RED) Utils.setTheme(convertView, Constants.RED); else //Your other themes return convertView; } 可能是setTheme()类中的静态方法,用于设置行的文本颜色或背景。或者您也可以在Utils内设置主题。