我有一个带有自定义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);
答案 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
内设置主题。