Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在SQLite中插入数据并使用RecyclerView显示_Android_Mysql_Sqlite_Android Recyclerview - Fatal编程技术网

Android 如何在SQLite中插入数据并使用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

我制作了RecyclerView来显示Mysql中的数据,现在效果很好。当我点击它时,我想制作一个收藏夹按钮,将此项目保存在收藏夹中,并在RecyclerView的新活动中显示它


我想我应该使用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});
}}
  • 您需要使用SQLite数据库离线存储fav项数据

    • 通过make a class扩展SQLiteOpenHelper并重写onCreate()在其中写入create table命令来创建一个包含所有数据字段的表,在这种情况下,不需要在onUpdate()方法中写入任何内容

    • 在“详细信息”活动中,为fav创建一个按钮,该按钮将实现在SQLite数据库中插入此项


  • 要在RecyclerView中查看SQLite中的数据,请执行以下操作:

    • 从项目类型“类”创建arraylist
    • 使用游标从SQLite数据库检索每个项数据
    • 在arraylist中添加项数据并将其发送到RecyclerView的适配器
  • 您可以使用本教程构建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;
    }}