how do i create a custom cursor adapter for a listview for use with images and text?

后端 未结 4 500
孤街浪徒
孤街浪徒 2020-12-05 01:14

Hi want to create a custom cursor adapter so I can display an image with 2 lines of text. I have had some trouble understanding the custom cursor adapters but I do not under

4条回答
  •  一整个雨季
    2020-12-05 01:37

    Check what I have done: BTW: CheckpointsView.getImageResId() returns a valid drawable reference

    public class CheckpointCursorAdapter extends ResourceCursorAdapter {
    
        private int layoutType = 0;
        public static final int BLOTTER = 1;
        public static final int DAY = 2;
        public static final int MONTH = 3;
        public static final int OVERVIEW = 4;
        public static final int LAYOUT_ID = R.layout.checkpoint_row;
    
        public CheckpointCursorAdapter(Context context, int layoutType, Cursor cursor) {
            super(context, LAYOUT_ID, cursor);
            this.layoutType = layoutType;
        }
    
        @Override
        public View newView(Context context, Cursor cur, ViewGroup parent) {
            LayoutInflater li = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            return li.inflate(LAYOUT_ID, parent, false);
        }
    
        @Override
        public void bindView(View view, Context context, Cursor cursor) {
    
            TextView tvListText = (TextView) view.findViewById(R.id.txtCheckPoint);
            Date dt = new Date(cursor.getLong(cursor.getColumnIndex(DatabaseHelper.KEY_CHECKPOINT)));
            switch (layoutType) {
                case BLOTTER:
                    tvListText.setText(dt.toLocaleString());
                    ((ImageView) view.findViewById(R.id.imgCheckpointInOut))
                            .setImageResource(CheckpointsView.getImageResId(cursor.getCount()
                                    - cursor.getPosition()));
                    break;
                case DAY:
                    tvListText.setText(new SimpleDateFormat("HH:mm:ss").format(dt));
                    ((ImageView) view.findViewById(R.id.imgCheckpointInOut))
                            .setImageResource(CheckpointsView.getImageResId(cursor.getPosition() + 1));
                    break;
                case MONTH:
                    tvListText.setText(new SimpleDateFormat("MMM dd HH:mm:ss").format(dt));
                    ((ImageView) view.findViewById(R.id.imgCheckpointInOut))
                            .setImageResource(CheckpointsView.getImageResId(cursor.getPosition() + 1));
                    break;
                case OVERVIEW:
                    break;
            }
        }
    
    }
    

    And the XML just in case

    
    

    
    
    
        
    
        
        
        
    
    

    You can check the whole code at: http://code.google.com/p/droidtimesheet/

提交回复
热议问题