使用自定义CursorAdapter将数据添加到listView

时间:2011-11-03 20:00:15

标签: android listview listactivity simplecursoradapter

您好我想在ListActivity中实现以下结果:

  1. 第一项,descritpion

  2. 第二项,说明

  3. ...

  4. 其中名称和描述来自

    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正在绘制视图的顺序有关。如果我将列表滚动到,中间然后旋转,这些数字都是这样混合的:

    1. 第一项

    2. 第二项

    3. 第三项

0 个答案:

没有答案