高仿網易評論列表效果之資料準備(二)
上一篇文章我們分析了網易評論列表的介面效果,有了一個大概的瞭解後我們來為我們的評論列表做些資料,為了方便起見,就不通過伺服器來做了,我們直接用SQLite來模擬一個簡單的本地伺服器資料庫~~。經過我們前面的分析得出,我們的資料庫應該有這樣的三個表:
- User—>用來存放使用者的基本資訊,比如使用者名稱、使用者頭像和使用者的地理位置等
- Post—>用來存放帖子的基本資訊,比如帖子的建立時間等
- Comment—>用來存放評論的基本資訊,比如評論的內容等
在實際專案中我們可以通過伺服器後臺的一些配置來實現三者之間的關聯以方便使用,但是因為我們是用的SQLite且資料庫置於本地,我們就使用最原始的辦法,為表之間的關聯單獨建立一個關聯表:
Post_Comment—>用來儲存Post和User之間的關聯
User_Praise—>用來儲存使用者和點贊帖子之間的關聯
User_UnPraise—>用來儲存使用者和被踩帖子之間的關聯
User_Collect—>用來儲存使用者和收藏帖子之間的關聯
有了這樣的一個關聯後我們還需要一個唯一的標識值來作為表之間關聯的標識,在Android中SQLite有主鍵_id,這個主鍵欄位我們不能隨意更改否則在進行Cursor查詢的時候會出錯,而且_id是自增長的Integer型別,其在每個表中都是獨立存在的,在我們進行標識的時候就有可能重複,鑑於此我們分別為User、Post和Comment表新增一個額外的flag欄位,該欄位的值我們在Android中使用UUID隨機生成。User、Post和Comment的大致關係我在PD中花了兩分鐘粗略畫了下(資料庫不是本節重點)如下圖:
PS:User和Post的多對多關係不會在例項中實現,但是會有體現
關聯表的模型就不給出了,下面我們來看看SQLite中構建表的SQL語句:
User表:
- create table user(_id integer primary key autoincrement, flag varchar(16), userName varchar(16), nick integer, location varchar(32))
- create table post(_id integer primary key autoincrement, flag varchar(16), createAt varchar(32))
- create table comment(_id integer primary key autoincrement, flag varchar(16), userFlag varchar(16), content varchar(1024), createAt varchar(32))
Post_Comment:
- create table post_comment(_id integer primary key autoincrement, postFlag varchar(16), commentFlag varchar(16))
User_Praise:
- create table user_praise(_id integer primary key autoincrement, userFlag varchar(16), postFlag varchar(16))
User_UnPraise:
- create table user_unpraise(_id integer primary key autoincrement, userFlag varchar(16), postFlag varchar(16))
User_Collect:
- create table user_collect(_id integer primary key autoincrement, userFlag varchar(16), postFlag varchar(16))
繼承SQLiteOpenHelper類開啟資料庫建表:
- package com.aigestudio.neteasecommentlistdemo.helper;
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteOpenHelper;
- /**
- * SQLite資料幫助類
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class ServerDBHelper extends SQLiteOpenHelper {
- private static final String DB_NAME = "server.db";//資料庫名
- private static final int VERSION = 1;//資料庫版本
- /*
- 建立模型表SQL
- */
- private static final String CREATE_TABLE_USER_SQL = "create table user(_id integer primary key autoincrement, flag varchar(16), userName varchar(16), nick integer, location varchar(32))";
- private static final String CREATE_TABLE_POST_SQL = "create table post(_id integer primary key autoincrement, flag varchar(16), createAt varchar(32))";
- private static final String CREATE_TABLE_COMMENT_SQL = "create table comment(_id integer primary key autoincrement, flag varchar(16), userFlag varchar(16), content varchar(1024), createAt varchar(32))";
- /*
- 建立關聯表SQL
- */
- private static final String CREATE_TABLE_POST_AND_COMMENT_SQL = "create table post_comment(_id integer primary key autoincrement, postFlag varchar(16), commentFlag varchar(16))";
- private static final String CREATE_TABLE_USER_AND_PRAISE_SQL = "create table user_praise(_id integer primary key autoincrement, userFlag varchar(16), postFlag varchar(16))";
- private static final String CREATE_TABLE_USER_AND_UNPRAISE_SQL = "create table user_unpraise(_id integer primary key autoincrement, userFlag varchar(16), postFlag varchar(16))";
- private static final String CREATE_TABLE_USER_AND_COLLECT_SQL = "create table user_collect(_id integer primary key autoincrement, userFlag varchar(16), postFlag varchar(16))";
- public ServerDBHelper(Context context) {
- super(context, DB_NAME, null, VERSION);
- }
- @Override
- public void onCreate(SQLiteDatabase db) {
- db.execSQL(CREATE_TABLE_USER_SQL);
- db.execSQL(CREATE_TABLE_POST_SQL);
- db.execSQL(CREATE_TABLE_COMMENT_SQL);
- db.execSQL(CREATE_TABLE_POST_AND_COMMENT_SQL);
- db.execSQL(CREATE_TABLE_USER_AND_PRAISE_SQL);
- db.execSQL(CREATE_TABLE_USER_AND_UNPRAISE_SQL);
- db.execSQL(CREATE_TABLE_USER_AND_COLLECT_SQL);
- }
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- //不浪費時間處理了
- }
- }
- package com.aigestudio.neteasecommentlistdemo.dao;
- import android.content.ContentValues;
- import java.util.List;
- import java.util.Map;
- /**
- * 伺服器資料層介面
- *
- * @author Aige
- * @since 2014/11/14
- */
- public interface IServerDAO extends IDAO {
- /**
- * 根據引數新增一條資料
- *
- * @param table 資料要新增到的表名
- * @param values 資料物件
- * @return 布林值代表資料新增成功與否
- */
- public boolean add(String table, ContentValues values);
- /**
- * 根據SQL語句新增一條資料
- *
- * @param sql SQL語句
- * @return 布林值代表資料新增成功與否
- */
- public boolean add(String sql);
- /**
- * 根據條件引數多條資料查詢
- *
- * @param table 要查詢的資料所在的表名
- * @param columns 要查詢的列名
- * @param whereClause 查詢的條件子句
- * @param selectionArgs 條件子句佔位符的引數
- * @param groupBy 分組控制
- * @param having 分組過濾
- * @param orderBy 排序
- * @param limit 分頁
- * @return 資料列表
- */
- public List<Map<String, String>> queryMulti(String table, String[] columns, String whereClause, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);
- /**
- * 根據SQL語句多條資料查詢
- *
- * @param sql SQL語句
- * @return 資料列表
- */
- public List<Map<String, String>> queryMulti(String sql);
- /**
- * 根據條件引數單條資料查詢
- *
- * @param table 要查詢的資料所在的表名
- * @param columns 要查詢的列名
- * @param flag 唯一標識值
- * @param groupBy 分組控制
- * @param having 分組過濾
- * @param orderBy 排序
- * @param limit 分頁
- * @return 單條
- */
- public Map<String, String> querySingle(String table, String[] columns, String flag, String groupBy, String having, String orderBy, String limit);
- /**
- * 根據SQL語句單條資料查詢
- *
- * @param sql SQL語句
- * @return 單條資料
- */
- public Map<String, String> querySingle(String sql);
- /**
- * 根據條件查詢單個值
- *
- * @param table 要查詢的資料所在的表名
- * @param columns 要查詢的列名
- * @param key 查詢的依據的列名
- * @param value 查詢依據值
- * @return 查詢結果
- */
- public String queryValue(String table, String[] columns, String key, String value);
- /**
- * 根據SQL語句查詢單個值
- *
- * @param sql SQL語句
- * @return 查詢結果
- */
- public String queryValue(String sql);
- }
- package com.aigestudio.neteasecommentlistdemo.dao;
- import android.content.ContentValues;
- import android.content.Context;
- import android.database.Cursor;
- import android.database.sqlite.SQLiteDatabase;
- import com.aigestudio.neteasecommentlistdemo.helper.ServerDBHelper;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * 伺服器資料層
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class ServerDAO implements IServerDAO {
- private ServerDBHelper dbHelper;
- public ServerDAO(Context context) {
- dbHelper = new ServerDBHelper(context);
- }
- @Override
- public boolean add(String table, ContentValues values) {
- boolean flag = false;
- SQLiteDatabase db = null;
- try {
- db = dbHelper.getWritableDatabase();
- long id = db.insert(table, null, values);
- flag = (id != -1 ? true : false);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (null != db) {
- db.close();
- }
- }
- return flag;
- }
- @Override
- public boolean add(String sql) {
- //未實現
- return false;
- }
- @Override
- public List<Map<String, String>> queryMulti(String table, String[] columns, String whereClause, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) {
- List<Map<String, String>> list = new ArrayList<Map<String, String>>();
- SQLiteDatabase db = null;
- Cursor cursor;
- try {
- db = dbHelper.getWritableDatabase();
- cursor = db.query(table, columns, whereClause, selectionArgs, groupBy, having, orderBy, limit);
- while (cursor.moveToNext()) {
- Map<String, String> map = new HashMap<String, String>();
- for (int i = 0; i < cursor.getColumnCount(); i++) {
- String columnName = cursor.getColumnName(i);
- String columnValue = cursor.getString(cursor.getColumnIndex(columnName));
- map.put(columnName, columnValue);
- }
- list.add(map);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (null != db) {
- db.close();
- }
- }
- return list;
- }
- @Override
- public List<Map<String, String>> queryMulti(String sql) {
- List<Map<String, String>> list = new ArrayList<Map<String, String>>();
- SQLiteDatabase db = null;
- Cursor cursor;
- try {
- db = dbHelper.getWritableDatabase();
- cursor = db.rawQuery(sql, null);
- while (cursor.moveToNext()) {
- Map<String, String> map = new HashMap<String, String>();
- for (int i = 0; i < cursor.getColumnCount(); i++) {
- String columnName = cursor.getColumnName(i);
- String columnValue = cursor.getString(cursor.getColumnIndex(columnName));
- map.put(columnName, columnValue);
- }
- list.add(map);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (null != db) {
- db.close();
- }
- }
- return list;
- }
- @Override
- public Map<String, String> querySingle(String table, String[] columns, String flag, String groupBy, String having, String orderBy, String limit) {
- Map<String, String> map = new HashMap<String, String>();
- SQLiteDatabase db = null;
- Cursor cursor;
- try {
- db = dbHelper.getWritableDatabase();
- cursor = db.query(table, columns, "flag like ?", new String[]{flag}, groupBy, having, orderBy, limit);
- while (cursor.moveToNext()) {
- for (int i = 0; i < cursor.getColumnCount(); i++) {
- String columnName = cursor.getColumnName(i);
- String columnValue = cursor.getString(cursor.getColumnIndex(columnName));
- map.put(columnName, columnValue);
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (null != db) {
- db.close();
- }
- }
- return map;
- }
- @Override
- public Map<String, String> querySingle(String sql) {
- return null;
- }
- @Override
- public String queryValue(String table, String[] columns, String key, String value) {
- String result = null;
- SQLiteDatabase db = null;
- try {
- db = dbHelper.getWritableDatabase();
- Cursor cursor = db.query(table, columns, key + " like ?", new String[]{value}, null, null, null, null);
- cursor.moveToNext();
- String columnName = cursor.getColumnName(0);
- result = cursor.getString(cursor.getColumnIndex(columnName));
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (null != db) {
- db.close();
- }
- }
- return result;
- }
- @Override
- public String queryValue(String sql) {
- //未實現
- return null;
- }
- }
首先先建立不同的物件實體:
- package com.aigestudio.neteasecommentlistdemo.beans;
- import com.aigestudio.neteasecommentlistdemo.cons.ClsCons;
- import java.util.UUID;
- /**
- * 使用者實體
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class User {
- /*
- 對應資料庫表列名
- */
- public static final String COLUMN_FLAG = "flag", COLUMN_USERNAME = "userName", COLUMN_LOCATION = "location", COLUMN_NICK = "nick";
- private String flag;//使用者標識系統隨機生成
- private String userName;//使用者名稱
- private String location;//使用者當前所在位置
- private String nick;//使用者頭像資源ID
- /**
- * 使用者實體的建構函式,建立使用者插入資料庫時使用
- */
- public User() {
- this.flag = UUID.randomUUID().toString();
- this.userName = ClsCons.USER_NAME[(int) (Math.random() * 10)];
- this.location = ClsCons.DEFAULT_LOCATION[(int) (Math.random() * 5)];
- this.nick = ClsCons.DEFAULT_NICK_RESID[(int) (Math.random() * 3)];
- }
- /**
- * 使用者實體的建構函式,從資料庫獲取使用者資料並例項化物件時使用
- *
- * @param flag 使用者標識
- * @param userName 使用者名稱
- * @param location 使用者地理位置
- * @param nick 使用者頭像資源ID
- */
- public User(String flag, String userName, String location, String nick) {
- this.flag = flag;
- this.userName = userName;
- this.location = location;
- this.nick = nick;
- }
- public String getFlag() {
- return flag;
- }
- public void setFlag(String flag) {
- this.flag = flag;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getLocation() {
- return location;
- }
- public void setLocation(String location) {
- this.location = location;
- }
- public String getNick() {
- return nick;
- }
- public void setNick(String nick) {
- this.nick = nick;
- }
- }
- package com.aigestudio.neteasecommentlistdemo.beans;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
- import java.util.Locale;
- import java.util.UUID;
- /**
- * 帖子實體類
- * 注:實體類的結構在實際專案中應在一定程度上參照伺服器後臺對應表的資料結構來設計,這裡我就不多BB了
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class Post {
- private String flag;//評論標識:系統隨機生成
- private String createAt;//評論時間:系統生成
- private List<Comment> comments;//該帖子下的所有評論,按插入資料庫的_id順序排列保證時間先後的統一
- private List<User> userPraises, userUnPraises, userCollects;//該帖子讚的人數、踩的人數和收藏的人數
- private Type type;//帖子型別:最新,最熱or普通
- /**
- * 評論實體的建構函式
- * 兩個成員變數均由系統賦值
- */
- public Post() {
- //生成隨機標識,這個隨機標識準確來說應該是服務端生成,這裡就不麻煩了 = =
- flag = UUID.randomUUID().toString();
- //生成系統時間,這個資料建立時間也應該是服務端生成
- Date date = new Date();
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss", Locale.getDefault());
- this.createAt = format.format(date);
- }
- public String getFlag() {
- return flag;
- }
- public void setFlag(String flag) {
- this.flag = flag;
- }
- public String getCreateAt() {
- return createAt;
- }
- public void setCreateAt(String createAt) {
- this.createAt = createAt;
- }
- public List<Comment> getComments() {
- return comments;
- }
- public void setComments(List<Comment> comments) {
- this.comments = comments;
- }
- public List<User> getUserPraises() {
- return userPraises;
- }
- public void setUserPraises(List<User> userPraises) {
- this.userPraises = userPraises;
- }
- public List<User> getUserUnPraises() {
- return userUnPraises;
- }
- public void setUserUnPraises(List<User> userUnPraises) {
- this.userUnPraises = userUnPraises;
- }
- public List<User> getUserCollects() {
- return userCollects;
- }
- public void setUserCollects(List<User> userCollects) {
- this.userCollects = userCollects;
- }
- public Type getType() {
- return type;
- }
- public void setType(Type type) {
- this.type = type;
- }
- /**
- * 帖子型別的列舉類
- */
- public enum Type {
- HOTTEST, NEWEST, NORMAL
- }
- }
- package com.aigestudio.neteasecommentlistdemo.beans;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Locale;
- import java.util.UUID;
- /**
- * 評論實體類
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class Comment {
- /*
- 對應資料庫表列名
- */
- public static final String COLUMN_FLAG = "flag", COLUMN_USERFLAG = "userFlag", COLUMN_CONTENT = "content", COLUMN_CREATEAT = "createAt";
- private String flag;//評論標識:系統隨機生成
- private String content;//評論內容
- private String createAt;//評論時間:系統生成
- private User user;//使用者實體
- /**
- * 評論實體的建構函式,生成評論插入資料庫時使用
- *
- * @param content 評論內容
- */
- public Comment(String content, User user) {
- //生成隨機標識,這個隨機標識準確來說應該是服務端生成,這裡就不麻煩了 = =
- flag = UUID.randomUUID().toString();
- //生成系統時間,這個資料建立時間也應該是服務端生成
- Date date = new Date();
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss", Locale.getDefault());
- this.createAt = format.format(date);
- this.user = user;
- this.content = content;
- }
- /**
- * 評論實體的建構函式,從資料庫獲取評論資料並例項化物件時使用
- *
- * @param flag 評論標識
- * @param user 評論使用者的使用者
- * @param content 評論內容
- * @param createAt 評論時間
- */
- public Comment(String flag, String content, String createAt, User user) {
- this.flag = flag;
- this.content = content;
- this.createAt = createAt;
- this.user = user;
- }
- public String getFlag() {
- return flag;
- }
- public void setFlag(String flag) {
- this.flag = flag;
- }
- public String getContent() {
- return content;
- }
- public void setContent(String content) {
- this.content = content;
- }
- public String getCreateAt() {
- return createAt;
- }
- public void setCreateAt(String createAt) {
- this.createAt = createAt;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- }
然後我們得建立10個不同的使用者來模擬不同使用者的評論效果:
- /*
- 建立使用者資料
- */
- for (int i = 0; i < 10; i++) {
- User user = new User();
- ContentValues values = new ContentValues();
- values.put("flag", user.getFlag());
- values.put("userName", user.getUserName());
- values.put("nick", user.getNick());
- values.put("location", user.getLocation());
- serverDAO.add("user", values);
- //物件標識儲存便於後續操作
- userFlagList.add(user.getFlag());
- users.add(user);
- }
- /*
- 建立帖子資料
- */
- for (int i = 0; i < 100; i++) {
- Post comment = new Post();
- ContentValues values = new ContentValues();
- values.put("flag", comment.getFlag());
- values.put("createAt", comment.getCreateAt());
- serverDAO.add("post", values);
- //物件標識儲存便於後續操作
- postFlagList.add(comment.getFlag());
- }
- /*
- 建立評論資料
- */
- for (int i = 0; i < 100; i++) {
- Comment comment = new Comment(Util.getRandomSimplified((int) (Math.random() * 100)), users.get((int) (Math.random() * 10)));
- ContentValues values = new ContentValues();
- values.put("flag", comment.getFlag());
- values.put("userFlag", comment.getUser().getFlag());
- values.put("content", comment.getContent());
- values.put("createAt", comment.getCreateAt());
- serverDAO.add("comment", values);
- //物件標識儲存便於後續操作
- commentFlagList.add(comment.getFlag());
- }
- /*
- 關聯帖子和評論的資料
- */
- for (String post : postFlagList) {
- /*
- 每條評論最多50條回覆
- */
- for (int i = 0; i < (int) (Math.random() * 50); i++) {
- ContentValues values = new ContentValues();
- values.put("postFlag", post);
- values.put("commentFlag", commentFlagList.get((int) (Math.random() * commentFlagList.size())));
- serverDAO.add("post_comment", values);
- }
- }
- /*
- 關聯使用者贊資料
- */
- for (String user : userFlagList) {
- /*
- 每個使用者最多贊10個帖子
- */
- for (int i = 0; i < (int) (Math.random() * 10); i++) {
- ContentValues values = new ContentValues();
- values.put("userFlag", user);
- //從帖子列表中隨機挑選
- values.put("postFlag", postFlagList.get((int) (Math.random() * postFlagList.size())));
- serverDAO.add("user_praise", values);
- }
- }
- /*
- 關聯使用者踩資料
- */
- for (String user : userFlagList) {
- /*
- 每個使用者最多踩10個帖子
- */
- for (int i = 0; i < (int) (Math.random() * 10); i++) {
- ContentValues values = new ContentValues();
- values.put("userFlag", user);
- //從帖子列表中隨機挑選
- values.put("postFlag", postFlagList.get((int) (Math.random() * postFlagList.size())));
- serverDAO.add("user_unpraise", values);
- }
- }
- /*
- 關聯使用者收藏資料
- */
- for (String user : userFlagList) {
- /*
- 每個使用者最多踩10個帖子
- */
- for (int i = 0; i < (int) (Math.random() * 10); i++) {
- ContentValues values = new ContentValues();
- values.put("userFlag", user);
- //從帖子列表中隨機挑選
- values.put("postFlag", postFlagList.get((int) (Math.random() * postFlagList.size())));
- serverDAO.add("user_collect", values);
- }
- }
- package com.aigestudio.neteasecommentlistdemo.bo;
- import android.content.ContentValues;
- import android.content.Context;
- import com.aigestudio.neteasecommentlistdemo.beans.Comment;
- import com.aigestudio.neteasecommentlistdemo.beans.Post;
- import com.aigestudio.neteasecommentlistdemo.beans.User;
- import com.aigestudio.neteasecommentlistdemo.dao.ServerDAO;
- import com.aigestudio.neteasecommentlistdemo.utils.Util;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * 建立資料的一些業務邏輯
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class SQLiteDataBO {
- private ServerDAO serverDAO;//伺服器資料的訪問物件
- private List<String> userFlagList, postFlagList, commentFlagList;//使用者唯一標識、帖子唯一標識、評論唯一標識列表資料
- private List<User> users;//使用者列表:用於模擬多個使用者操作
- public SQLiteDataBO(Context context) {
- serverDAO = new ServerDAO(context);
- }
- /**
- * 初始化伺服器資料
- */
- public void initServerData() {
- //初始化Flag列表
- userFlagList = new ArrayList<String>();
- postFlagList = new ArrayList<String>();
- commentFlagList = new ArrayList<String>();
- users = new ArrayList<User>();
- /*
- 建立使用者資料
- */
- /*
- 建立帖子資料
- */
- /*
- 建立評論資料
- */
- /*
- 關聯帖子和評論的資料
- */
- /*
- 關聯使用者贊資料
- */
- /*
- 關聯使用者踩資料
- */
- /*
- 關聯使用者收藏資料
- */
- }
- }
- package com.aigestudio.neteasecommentlistdemo.cons;
- import com.aigestudio.neteasecommentlistdemo.R;
- /**
- * 存放一些應用的常量類
- *
- * @author Aige
- * @since 2014/11/14
- */
- public class ClsCons {
- /*
- 使用者名稱陣列:用來模擬不同的使用者操作(僅供參考)
- */
- public static final String[] USER_NAME = {"斯蒂芬·愛哥", "羅羅亞·草泥馬", "宇智波·逗比", "艾斯比·莊臣", "八歧大蛇", "蒙奇·D·肏飛", "漩渦·溜溜球", "蠟筆·大大新", "虛妄之諾", "風間·八神"};//固定的使用者名稱}
- /*
- 地理位置陣列:用來模擬不同的地理位置(僅供參考)
- */
- public static final String[] DEFAULT_LOCATION = {"網易火星網友", "網易天狼星網友", "網易太陽網友", "網易逗比網友", "網易尼麻痺網友"};
- /*
- 使用者頭像的資源ID陣列:用來模擬不同的使用者頭像
- */
- public static final String[] DEFAULT_NICK_RESID = {String.valueOf(R.drawable.nick1), String.valueOf(R.drawable.nick2), String.valueOf(R.drawable.nick3)};
- }
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- //初始化控制元件
- // initWidget();
- //初始化資料
- sqLiteDataBO = new SQLiteDataBO(this);
- sqLiteDataBO.initServerData();
- }
SQLiteManager中檢視下生成的資料:
好了~~測試資料的建立就講到這裡,勞資都煩了越寫越不曉得寫了什麼……囧!下一節我們將進入核心部分~~來實現這麼一個評論列表~~先來兩張高清無碼大圖養養眼:
- 頂
- 1
- 踩
相關文章
- 爬蟲實踐之獲取網易雲評論資料資訊爬蟲
- 仿網易LOFTER視差滾動列表
- Flutter(十二)之練習高仿豆瓣電影列表Flutter
- 單個Acticity顯示多個列表,仿內涵段子詳情頁的熱門評論、全部評論
- 網易雲音樂評論爬蟲(2):歌曲的全部評論爬蟲
- Hyperf抓取網易雲音樂評論
- 高仿網易雲音樂 Vue前端專案Vue前端
- SimpleMusic-網易雲音樂高仿-安卓安卓
- 資料標準在網易的實踐
- 網易雲音樂的一個評論
- Openfire安裝準備-MySQL資料庫準備MySql資料庫
- 高階UI特效之仿3D翻轉切換效果UI特效3D
- 網易數帆資料生產力方法論
- Oracle DB 資料準備Oracle
- 利用python進行資料分析之準備工作(1)Python
- Python爬蟲之js加密破解,抓取網易雲音樂評論生成詞雲Python爬蟲JS加密
- 28.qt quick-ListView高仿微信好友列表和聊天列表QTUIView
- websocket 二進位制資料傳輸基礎準備工作Web
- 什麼是資料準備?
- 高仿包二手代理
- 仿微信評論控制元件封裝控制元件封裝
- 仿網易雲音樂webAppWebAPP
- 英文社交媒體網站 影片網站 評論資料集 語料庫網站
- LRC歌詞原理和實現高仿Android網易雲音樂Android
- 淘寶/天貓淘寶評論問答列表(item_question_answer-淘寶評論問答列表介面)
- 網站怎麼修改評論資訊,如何管理和編輯網站評論網站
- 仿網易126網路硬碟上傳硬碟
- 【公益譯文】NASA網路安全準備度(二)
- Laravel+Vue 構建仿簡書二級評論系統包含郵件通知LaravelVue
- 評論稽核標準(暫行版)
- 京東商品評論資料介面,電商平臺評論介面,行業商品評論資料介面程式碼封裝教程行業封裝
- 淘寶商品評論資料介面,電商平臺評論介面,行業商品評論資料介面程式碼封裝教程行業封裝
- 5.Flink實時專案之業務資料準備
- 用Python分析44萬條資料,揭祕如何成為網易雲音樂評論區的網紅段子手Python
- iOS 仿即刻評論輸入框帶圖片iOS
- 資料清洗和準備 (待更新)
- 卡拉OK歌詞原理和實現高仿Android網易雲音樂Android
- 文件解析效果全維度測評標準
- 仿網易雲音樂播放介面