Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 将数据从RecyclerView保存到SQLite数据库_Android_Sqlite_Android Studio_Android Recyclerview - Fatal编程技术网

Android 将数据从RecyclerView保存到SQLite数据库

Android 将数据从RecyclerView保存到SQLite数据库,android,sqlite,android-studio,android-recyclerview,Android,Sqlite,Android Studio,Android Recyclerview,我正在制作一个应用程序,从recyclerview中的json url获取图像、文本和url,并在cardview中显示文本和图像。当用户单击该项目时,它将打开新的webview活动并将url传递给该活动。一切正常。但是现在我想列一个最喜欢的列表。当用户单击recyclerview项上的按钮时,它会将该项数据保存到SQLite数据库中。我所做的一切都和教程一样,但都不起作用 当我点击favbtn时,它说失败了。这意味着数据没有保存在数据库中 请你知道我的错误在哪里,我被困在这三天,找不到答案 这

我正在制作一个应用程序,从recyclerview中的json url获取图像、文本和url,并在cardview中显示文本和图像。当用户单击该项目时,它将打开新的webview活动并将url传递给该活动。一切正常。但是现在我想列一个最喜欢的列表。当用户单击recyclerview项上的按钮时,它会将该项数据保存到SQLite数据库中。我所做的一切都和教程一样,但都不起作用

当我点击favbtn时,它说失败了。这意味着数据没有保存在数据库中

请你知道我的错误在哪里,我被困在这三天,找不到答案

这是我的密码

RecyclerAdapter.java

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
    private Context mContext;
    private List<Model> modelList;



    public RecyclerAdapter(Context context, List<Model> listData) {
        this.modelList = listData;
        this.mContext = context;


    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {



        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row, parent, false);
        return new ViewHolder(view);
    }


    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        final Model model = modelList.get(position);


        holder.title.setText(modelList.get(position).getTitle());
        Picasso.get().load(modelList.get(position).getImage()).into(holder.imageView);

    }



    @Override
    public int getItemCount() {
        return modelList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView title;
        ImageView imageView;
        Button favBtn;

        public ViewHolder(View itemView) {
            super(itemView);


            title = itemView.findViewById(R.id.Title);
            imageView = itemView.findViewById(R.id.ImageView);
            favBtn = itemView.findViewById(R.id.favBtn);
            favBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    DatabaseHandler favDB = new DatabaseHandler(mContext);
                    int position = getAdapterPosition();
                    Model model = modelList.get(position);
                    favDB.insertIntoTheDataBase(model.getTitle(),
                            model.getImage().trim(),model.getUrl().trim());

                }

            });

            itemView.setClickable(true);
            mContext = itemView.getContext();


            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String Url = modelList.get(getAdapterPosition()).getUrl();
                    Intent i = new Intent(mContext, WebViewActivity.class);
                    i.putExtra("url1", modelList.get(getAdapterPosition()).getUrl());
                    mContext.startActivity(i);
                }
            });

        }
    }

}
Model.java

public class Model {
    String title, image, url ;


    public Model() {
    }


    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getTitle() {
        return title;
    }

    public String getImage() {
        return image;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setImage(String image) {
        this.image = image;
    }


}
HomeFragment.java

public class HomeFragment extends Fragment {
    private final String Data = "https://medicalibrary.net/wp-content/uploads/Allergy.json";
    private RecyclerView recyclerView;
    private JsonArrayRequest jsonArrayRequest;
    RequestQueue requestQueue;
    private ArrayList<Model> modelList = new ArrayList<>();
    private RecyclerAdapter recyclerAdapter;



    public static HomeFragment newInstans() {
        HomeFragment homeFragment = new HomeFragment();
        return homeFragment;
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.home_fragment_acivity, container, false);

        recyclerView = view.findViewById(R.id.recyclerview2);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        recyclerView.setHasFixedSize(true);


        httpGet();


        return view;
    }

    private void httpGet() {
        requestQueue = Volley.newRequestQueue(getContext());
        jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, Data, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                for (int i = 0; i < response.length(); i++) {
                    DatabaseHandler db = new DatabaseHandler (getContext());
                    try {
                        JSONObject jsonObject = response.getJSONObject(i);
                        Model model = new Model();
                        model.setTitle(jsonObject.getString("title"));
                        model.setImage(jsonObject.getString("image"));
                        model.setUrl(jsonObject.getString("url"));

                        modelList.add(model);



                        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
                        recyclerAdapter = new RecyclerAdapter(getContext(), modelList);
                        recyclerView.setAdapter(recyclerAdapter);


                        // context of your activity or fragment



                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }



            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("Tag", "onErrorResponse" + error.getMessage());
            }
        });

        requestQueue.add(jsonArrayRequest);
    }
}
公共类HomeFragment扩展了片段{
私有最终字符串数据=”https://medicalibrary.net/wp-content/uploads/Allergy.json";
私人回收站;
私有JsonArrayRequest JsonArrayRequest;
请求队列请求队列;
私有ArrayList modelList=新ArrayList();
私人回收器适配器回收器适配器;
公共静态HomeFragment newInstans(){
HomeFragment HomeFragment=新的HomeFragment();
返回homeFragment;
}
@凌驾
创建时的公共void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图=充气机。充气(R.layout.home\u fragment\u acity,container,false);
recyclerView=view.findViewById(R.id.recyclerview2);
setLayoutManager(新的LinearLayoutManager(getContext());
recyclerView.setHasFixedSize(true);
httpGet();
返回视图;
}
私有void httpGet(){
requestQueue=Volley.newRequestQueue(getContext());
jsonArrayRequest=newJSONARRAYREQUEST(Request.Method.GET,Data,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
对于(int i=0;i
您的输入可能有问题。尝试
Log.v(“调试”,model.getTitle()+,“+model.getImage().trim()+,”+model.getUrl().trim())并确保不是这样。我收到了这个错误E/SQLiteLog:(1)无法识别的标记::“错误从哪行代码返回?
public class HomeFragment extends Fragment {
    private final String Data = "https://medicalibrary.net/wp-content/uploads/Allergy.json";
    private RecyclerView recyclerView;
    private JsonArrayRequest jsonArrayRequest;
    RequestQueue requestQueue;
    private ArrayList<Model> modelList = new ArrayList<>();
    private RecyclerAdapter recyclerAdapter;



    public static HomeFragment newInstans() {
        HomeFragment homeFragment = new HomeFragment();
        return homeFragment;
    }


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.home_fragment_acivity, container, false);

        recyclerView = view.findViewById(R.id.recyclerview2);
        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
        recyclerView.setHasFixedSize(true);


        httpGet();


        return view;
    }

    private void httpGet() {
        requestQueue = Volley.newRequestQueue(getContext());
        jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, Data, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                for (int i = 0; i < response.length(); i++) {
                    DatabaseHandler db = new DatabaseHandler (getContext());
                    try {
                        JSONObject jsonObject = response.getJSONObject(i);
                        Model model = new Model();
                        model.setTitle(jsonObject.getString("title"));
                        model.setImage(jsonObject.getString("image"));
                        model.setUrl(jsonObject.getString("url"));

                        modelList.add(model);



                        recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
                        recyclerAdapter = new RecyclerAdapter(getContext(), modelList);
                        recyclerView.setAdapter(recyclerAdapter);


                        // context of your activity or fragment



                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }



            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("Tag", "onErrorResponse" + error.getMessage());
            }
        });

        requestQueue.add(jsonArrayRequest);
    }
}