您好我想在ListActivity中实现以下结果:
第一项,descritpion
第二项,说明
...
其中名称和描述来自
Cursor c = db.rawQuery(...);
我使用了 SimpleCursorAdapter ,我没有遇到任何问题。然后我决定在显示之前对光标中的数据进行一些修改。我希望有一个内部计数器,每当光标适配器显示新视图时,它会递增。这就是我决定实现自己的 CustomCursorAdapter 扩展 SimpleCursorAdapter 的原因:
public class TrainingsListCursorAdapter extends SimpleCursorAdapter{
private Context context;
private int layout;
int list_item_order_number = 1;
public TrainingsListCursorAdapter(Context context, int layout, Cursor c,
String[] from, int[] to) {
super(context, layout, c, from, to);
this.context = context;
this.layout = layout;
}//contructor
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent){
Cursor c = getCursor();
final LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layout, parent, false);
String durationCol = c.getString(c.getColumnIndex("duration"));
if(durationCol != null){
durationCol = minutesForSeconds(durationCol);
}
TextView textViewDuration = (TextView) v.findViewById(R.id.duration);
TextView order_number = (TextView) v.findViewById(R.id.list_item_num);
if(order_number != null){
order_number.setText(String.valueOf(list_item_order_number));
}
if(textViewDuration != null){
textViewDuration.setText(durationCol);
}
list_item_order_number++;
return v;
}
我有一个成员变量_list_item_order_number_,每次绘制一个视图/行时都会加1(通过调用newView()方法)。此编号显示在每个视图/列表项中,并且对应于列表项目顺序...
我遇到的问题是,当我旋转屏幕时,此号码不再对应列表项目。例如,我的第3个项目的值为1,依此类推......
我想这与Android正在绘制视图的顺序有关。如果我将列表滚动到,中间然后旋转,这些数字都是这样混合的:
第一项
第二项
第三项