Android 如何在SQLite中插入数据并使用RecyclerView显示
我制作了RecyclerView来显示Mysql中的数据,现在效果很好。当我点击它时,我想制作一个收藏夹按钮,将此项目保存在收藏夹中,并在RecyclerView的新活动中显示它Android 如何在SQLite中插入数据并使用RecyclerView显示,android,mysql,sqlite,android-recyclerview,Android,Mysql,Sqlite,Android Recyclerview,我制作了RecyclerView来显示Mysql中的数据,现在效果很好。当我点击它时,我想制作一个收藏夹按钮,将此项目保存在收藏夹中,并在RecyclerView的新活动中显示它 我想我应该使用Sqlite在其中保存数据,然后显示在喜爱的活动中,但我不知道如何才能做到这一点,请帮助我 我试着制作Sqlite public class DB_Sqlit extends SQLiteOpenHelper { public static final String BDname = "mdata.db
我想我应该使用Sqlite在其中保存数据,然后显示在喜爱的活动中,但我不知道如何才能做到这一点,请帮助我 我试着制作Sqlite
public class DB_Sqlit extends SQLiteOpenHelper {
public static final String BDname = "mdata.db";
public DB_Sqlit(Context context) {
super(context, BDname, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table favorite ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, img TEXT, url TEXT, num TEXT, size TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS favorite");
onCreate(db);
}
public Boolean Insert_to_favorite(String name, String img, String url, String num, String size) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name", name);
contentValues.put("img", img);
contentValues.put("url", url);
contentValues.put("num", num);
contentValues.put("size", size);
long result = db.insert("favorite", null, contentValues);
if (result == -1)
return false;
else
return true;
}
public ArrayList getAllList_Favorite() {
ArrayList<listitem_gib> arraylist = new ArrayList<listitem_gib>();
SQLiteDatabase db = this.getReadableDatabase();
Cursor rs = db.rawQuery("select * from favorite", null);
rs.moveToFirst();
while (!rs.isAfterLast()) {
String id = rs.getString(rs.getColumnIndex("id"));
String name = rs.getString(rs.getColumnIndex("name"));
String img = rs.getString(rs.getColumnIndex("img"));
String url = rs.getString(rs.getColumnIndex("url"));
String num = rs.getString(rs.getColumnIndex("num"));
String size = rs.getString(rs.getColumnIndex("size"));
arraylist.add(new listitem_gib());
rs.moveToNext();
}
return arraylist;
}
public int get_check_List_Favorite(String Title) {
SQLiteDatabase db = this.getReadableDatabase();
Cursor rs = db.rawQuery("select * from favorite Where name like '"+ Title +"'", null);
rs.moveToFirst();
int count = rs.getCount();
return count;
}
public Integer Delete(String id) {
SQLiteDatabase db = this.getWritableDatabase();
return db.delete("favorite", "id = ?", new String[]{id});
}}
- 通过make a class扩展SQLiteOpenHelper并重写onCreate()在其中写入create table命令来创建一个包含所有数据字段的表,在这种情况下,不需要在onUpdate()方法中写入任何内容
- 在“详细信息”活动中,为fav创建一个按钮,该按钮将实现在SQLite数据库中插入此项
- 从项目类型“类”创建arraylist
- 使用游标从SQLite数据库检索每个项数据
- 在arraylist中添加项数据并将其发送到RecyclerView的适配器
或此代码有错误吗?顺便说一句,使用“onUpgrade”时要小心,你正在删除表,这意味着一旦你更新数据库版本,所有用户都将丢失他们的收藏夹。我不知道如何才能做到这一点,我只是看到了一个教程并制作了Sqlite,但我不知道如何使用它并制作一个喜爱的活动
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_r_arabic);
GetDataAdapter1 = new ArrayList<>();
recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
progressBar = (ProgressBar) findViewById(R.id.progress_bar);
recyclerView.setHasFixedSize(true);
recyclerViewlayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(recyclerViewlayoutManager);
progress_layout = (LinearLayout) findViewById(R.id.progress_layout);
progress_layout.setVisibility(View.VISIBLE);
JSON_DATA_WEB_CALL();
}
public void JSON_DATA_WEB_CALL(){
Intent intent = getIntent();
story_type = intent.getStringExtra("story_type");
String GET_JSON_DATA_HTTP_URL = "http://grassyhat.com/android/" + story_type + ".php";
jsonArrayRequest = new JsonArrayRequest(GET_JSON_DATA_HTTP_URL,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
progress_layout.setVisibility(View.GONE);
JSON_PARSE_DATA_AFTER_WEBCALL(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue = Volley.newRequestQueue(this);
requestQueue.add(jsonArrayRequest);
}
public void JSON_PARSE_DATA_AFTER_WEBCALL(JSONArray array){
for(int i = 0; i<array.length(); i++) {
listitem_gib GetDataAdapter2 = new listitem_gib();
JSONObject json = null;
try {
json = array.getJSONObject(i);
GetDataAdapter2.setId(json.getString(id));
GetDataAdapter2.setName(json.getString(name));
GetDataAdapter2.seturl(json.getString(url));
GetDataAdapter2.setimg(json.getString(img));
GetDataAdapter2.setnum(json.getString(num));
GetDataAdapter2.setsize(json.getString(size));
} catch (JSONException e) {
e.printStackTrace();
}
GetDataAdapter1.add(GetDataAdapter2);
}
recyclerViewadapter = new RecyclerViewAdapter(GetDataAdapter1, this);
//RecyclerView needs a layout manager in order to display data so here we create one
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
//Here we set the layout manager and the adapter to the listview
recyclerView.setLayoutManager(layoutManager);
recyclerView.setAdapter(recyclerViewadapter);
}
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder> {
Context context;
List<listitem_gib> getDataAdapter;
public RecyclerViewAdapter(List<listitem_gib> getDataAdapter, Context context){
super();
this.getDataAdapter = getDataAdapter;
this.context = context;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_layout, parent, false);
ViewHolder viewHolder = new ViewHolder(v,context,getDataAdapter);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
listitem_gib getDataAdapter1 = getDataAdapter.get(position);
holder.name.setText(getDataAdapter1.getName());
holder.num.setText(getDataAdapter1.getnum());
Picasso.with(context).load("http://grassyhat.com/android/image/" + getDataAdapter1.getimg()).into(holder.img1);
}
@Override
public int getItemCount() {
return getDataAdapter.size();
}
class ViewHolder extends RecyclerView.ViewHolder
implements View.OnClickListener{
public TextView name;
public TextView num;
public ImageView img1;
Context context;
List<listitem_gib> getDataAdapter;
public ViewHolder(View itemView, Context context ,List<listitem_gib> getDataAdapter ) {
super(itemView);
itemView.setOnClickListener(this);
this.getDataAdapter = getDataAdapter;
this.context = context;
name = (TextView) itemView.findViewById(R.id.Main_Text) ;
num = (TextView) itemView.findViewById(R.id.Second_Text) ;
img1 = (ImageView) itemView.findViewById(R.id.img1) ;
}
@Override
public void onClick(View v) {
int position = getAdapterPosition();
listitem_gib getDataAdapter =this.getDataAdapter.get(position);
Intent intent = new Intent(this.context,Rewaya_info.class);
intent.putExtra("name",getDataAdapter.getName());
intent.putExtra("url",getDataAdapter.geturl());
intent.putExtra("img",getDataAdapter.getimg());
intent.putExtra("num",getDataAdapter.getnum());
intent.putExtra("size",getDataAdapter.getsize());
this.context.startActivity(intent);
}
}}
public class listitem_gib {
String id;
String name;
String url;
String img;
String num;
String size;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getid() {
return id;
}
public void setId(String id1) {
this.id = id1;
}
public String geturl() {
return url;
}
public void seturl(String url1) {
this.url = url1;
}
public String getimg() {
return img;
}
public void setimg(String img1) {
this.img = img1;
}
public String getnum() {
return num;
}
public void setnum(String num1) {
this.num = num1;
}
public String getsize() {
return size;
}
public void setsize(String size1) {
this.size = size1;
}}