JamesMusic浅读--------2,ListViewCardsAdapter和数据库初显
来源:互联网 发布:单桂敏淘宝哪个真的 编辑:程序博客网 时间:2024/06/08 15:17
我们通过读代码知道,ListViewFragment里面的ListView的Adapter是通过绑定数据库显示数据的。
首先我们先简单实现一下数据库类。
/** * Created by kankan on 2016/5/25. */public class DBAccessHelper extends SQLiteOpenHelper{ //Writable database instance. private SQLiteDatabase mDatabase; public DBAccessHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE addressbook23d (_id INTEGER PRIMARY KEY , name VARCHAR, phone VARCHAR)");//执行有更改的sql语句 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } public Cursor testDbRawQuery() { SQLiteDatabase sqLiteDatabase = getWritableDatabase(); Cursor cursor = sqLiteDatabase.rawQuery("SELECT * FROM addre",null); return cursor; } /** * Returns a writable instance of the database. Provides an additional * null check for additional stability. */ private synchronized SQLiteDatabase getDatabase() { if (mDatabase==null) mDatabase = getWritableDatabase(); return mDatabase; }}
就是一个SqlLiteOpenHelper的类。这样我们就有数据提供了。
接下来写ListViewCardsAdapter来显示数据。
/** * Created by kankan on 2016/5/24. */public class ListViewCardsAdapter extends SimpleCursorAdapter { private Context mContext; private Common mApp; private ListViewFragment mListViewFragment; public static ListViewHolder mHolder = null; private HashMap<Integer, String> mDBColumnsMap; public static final int TITLE_TEXT = 0; public static final int SOURCE = 1; public static final int FILE_PATH = 2; public static final int ARTWORK_PATH = 3; public static final int FIELD_1 = 4; //Empty fields for other public static final int FIELD_2 = 5; public static final int FIELD_3 = 6; public static final int FIELD_4 = 7; public static final int FIELD_5 = 8; private String mName = ""; public ListViewCardsAdapter(Context context, ListViewFragment listViewFragment, HashMap<Integer, String> dbColumnsMap) { super(context, -1, listViewFragment.getCursor(), new String[] {}, new int[] {}, 0); mContext = context; mListViewFragment = listViewFragment; mApp = (Common) mContext.getApplicationContext(); mDBColumnsMap = dbColumnsMap; } @Override public View getView(int position, View convertView, ViewGroup parent) { Cursor c = (Cursor) getItem(position); if(convertView == null){ convertView = LayoutInflater.from(mContext).inflate(R.layout.list_view_item, parent, false); mHolder = new ListViewHolder(); mHolder.leftImage = (ImageView) convertView.findViewById(R.id.listViewLeftIcon); mHolder.titleText = (TextView) convertView.findViewById(R.id.listViewTitleText); mHolder.subText = (TextView) convertView.findViewById(R.id.listViewSubText); mHolder.rightSubText = (TextView) convertView.findViewById(R.id.listViewRightSubText); mHolder.overflowIcon = (ImageButton) convertView.findViewById(R.id.listViewOverflow); mHolder.subTextParent = (RelativeLayout) convertView.findViewById(R.id.listViewSubTextParent); convertView.setTag(mHolder); }else { mHolder = (ListViewHolder) convertView.getTag(); } //Retrieve data from the cursor. String titleText = ""; String source = ""; String filePath = ""; String artworkPath = ""; String field1 = ""; String field2 = ""; String field3 = ""; String field4 = ""; String field5 = ""; titleText = c.getString(c.getColumnIndex("name")); convertView.setTag(R.string.title_text, titleText); //Set the title text in the ListView. mHolder.titleText.setText(titleText); // TODO: 2016/5/25 测试代码 Typeface tf = Typeface.createFromAsset(mContext.getAssets(), "fonts/Roboto-Light.ttf"); mHolder.titleText.setTextColor(Color.BLUE); mHolder.titleText.setTypeface(tf); return convertView; } /** * Holder subclass for ListViewCardsAdapter. * * @author Saravan Pantham */ static class ListViewHolder { public ImageView leftImage; public TextView titleText; public TextView subText; public TextView rightSubText; public ImageButton overflowIcon; public RelativeLayout subTextParent; }}
这个类很简单,就是继承了SimpleCursorAdapter的Adapter重写View将数据显示出来。
接下来咱们在ListViewFragment里面将这个数据显示绑定到数据库里面就行了。
DBAccessHelper helper; SQLiteDatabase sqldb; void testDbHelper(){ helper = new DBAccessHelper(mContext, "sql23.db", null, 1); // mCursor = helper.testDbRawQuery(); ContentValues cv =new ContentValues(); sqldb = helper.getWritableDatabase(); cv.put("name", "hk"); cv.put("phone", "20050519"); // name和phone为列名 long res = sqldb.insert("addressbook23d", null, cv);// 插入数据 if (res == -1) { Toast.makeText(mContext, "添加失败", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(mContext, "添加成功", Toast.LENGTH_SHORT).show(); } mCursor = sqldb.rawQuery("SELECT * FROM addressbook23d",null); mListViewAdapter = new ListViewCardsAdapter(mContext, mFragment, mDBColumnsMap); mListView.setAdapter(mListViewAdapter); }
最终效果如下
源代码稍后上传。
,
0 0
- JamesMusic浅读--------2,ListViewCardsAdapter和数据库初显
- JamesMusic浅读--------5,文件选择系统的数据库绑定
- JamesMusic浅读--------6,补全欢迎界面,音乐文件数据库
- JamesMusic浅读--------9,播放界面初显及播放类完善
- JamesMusic浅读--------3,欢迎界面。
- JamesMusic浅读--------8,音乐文件播放
- JamesMusic浅读--------1,先显示playlist
- JamesMusic浅读--------4,文件选择系统界面
- JamesMusic浅读--------7,音乐列表界面显示
- jbpm和数据库2
- 初web表单和数据库
- 2、创建数据库和表
- 数据库显式和隐式commit
- 数据库和xml协同工作(2)
- MySQL 数据库的备份和恢复(2)
- 数据库正规化和设计技巧(2)
- Zend Framework 2 -- 数据库和模式
- 【Linux】-- Mysql(2) : 创建数据库和数据表
- 类的特殊成员函数——构造函数
- 【codeforces】#621B-Wet Shark and Bishops
- R语言系列:datasets(R自带数据包)
- 11. SpringMVC_CookieValue 注解
- STAX解析
- JamesMusic浅读--------2,ListViewCardsAdapter和数据库初显
- 阶段工作
- R语言:常用函数(9.29 更新版)
- CocoaPods 错误 target overrides the `OTHER_LDFLAGS`
- 蓝桥杯--基础练习--BASIC-3字母图形
- 通过HttpServletRequest判断客户端浏览器类型是否为IE11
- eclipse代码自动提示,eclipse设置代码自动提示
- 【CodeForces】675B - Restoring Painting(数学推导)
- 2016SDAU课程练习三1002