ExpandableListView(手风琴)(2)---CursorTreeAdapter(数据库)

来源:互联网 发布:淘宝积分有什么用处 编辑:程序博客网 时间:2024/06/01 09:00

ExpandableListView(手风琴)(1)—BaseExpandableListAdapter

  • 自定义适配器继承CursorTreeAdapter
    构造方法比base额外传递进来一个cursor
    LayoutInflater mInflater;    DBWrapper mDbWrapper;    //参数1 组的游标    public DBAdapter(Cursor groupCursor, Context context) {        super(groupCursor, context);        mInflater=LayoutInflater.from(context);        mDbWrapper=new DBWrapper(context);    }

组的创建绑定

    @Override    protected View newGroupView(Context context, Cursor groupCursor, boolean isExpandable,ViewGroup contanier) {        return mInflater.inflate("布局", null);    }    @Override    protected void bindGroupView(View groupView, Context context, Cursor groupCursor,            boolean isExpandable) {        TextView txtTitle=(TextView) groupView.findViewById(R.id.txt_group);        txtTitle.setPadding(30, 0, 0, 0);      txtTitle.setText(groupCursor.getString(groupCursor.getColumnIndex("列名")));    }

子条目的创建绑定

    @Override    protected View newChildView(Context context, Cursor childCursor, boolean isLast,            ViewGroup container) {        return mInflater.inflate("布局", null);    }    @Override    protected void bindChildView(View view, Context context, Cursor childCursor,boolean isLast) {        TextView txtChild=(TextView) view.findViewById(R.id.txt_child);        txtChild.setPadding(30, 0, 0, 0);                          String des=childCursor.getString(childCursor.getColumnIndex(""));        String  leanr=childCursor.getString(childCursor.getColumnIndex(Constant.COLUME_NAME_DETAIL_LEANER));        txtChild.setText(des+"\n 学习人数:"+leanr);    }//这个方法获得的是一个cursor 方便上面给方法转换为string    @Override    protected Cursor getChildrenCursor(Cursor groupCursor) {        return mDbWrapper.getChildData(groupCursor.getString(groupCursor.getColumnIndex("数据库列名")));    }
  • 数据库帮助类
public class DBOpenHelper extends SQLiteOpenHelper{    public DBOpenHelper(Context context) {        super(context,"表名", null, "版本号");    }    @Override    public void onCreate(SQLiteDatabase db) {        String courseSql="建父表"        db.execSQL(courseSql);        String detailSql="建子表"        db.execSQL(detailSql);    }    @Override    public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {    }}

数据库封装类

public class DBWrapper {    private DBOpenHelper mDbOpenHelper;    private SQLiteDatabase mDatabase;    public DBWrapper(Context context){        mDbOpenHelper=new DBOpenHelper(context);    }    public void insertGroupDefault(Object a){        mDatabase=mDbOpenHelper.getWritableDatabase();        ContentValues value=new ContentValues();        value.put("列名","参数")        mDatabase.insert("表名父", null, value);//      mDatabase.close();    }    public void insertChildDefault(Object a){        mDatabase=mDbOpenHelper.getWritableDatabase();        ContentValues value=new ContentValues();        value.put("列名","参数");        mDatabase.insert("表名子", null, value);//      mDatabase.close();    }    public Cursor getGroupData(){        mDatabase=mDbOpenHelper.getReadableDatabase();        Cursor groupCursor=mDatabase.query("表名父", null, null, null, null, null, null);//      mDatabase.close();        return groupCursor;    }    public Cursor getChildData(String type){        mDatabase=mDbOpenHelper.getReadableDatabase();        Cursor chCursorCursor=mDatabase.query("表名子", null, "列名"+"=?", new String[]{type}, null, null, null);//      mDatabase.close();        return chCursorCursor;    }}
  • activity中加载数据
private DBWrapper dbWrapper;//对dbWrapper的方法进行操作dbWrapper.insertGroupDefault("参数");Cursor c=dbWrapper.getGroupData();DBAdapter adapter=new DBAdapter(c, this);"控件ID".setAdapter(adapter);