Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.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
如何在AndroidRecyclView中访问SQLite数据库?_Android_Database_Sqlite_Database Connection_Android Cardview - Fatal编程技术网

如何在AndroidRecyclView中访问SQLite数据库?

如何在AndroidRecyclView中访问SQLite数据库?,android,database,sqlite,database-connection,android-cardview,Android,Database,Sqlite,Database Connection,Android Cardview,我创建了一个SQLite数据库,其中包含两列:“标题”和“内容”,不知道如何在我的android RecyclerView中显示它,其中包含两个文本视图“卡片标题”和“卡片内容”。请帮我做这个。 这是我的回收器适配器: public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { private ClipboardManager myClipboard;

我创建了一个SQLite数据库,其中包含两列:“标题”和“内容”,不知道如何在我的android RecyclerView中显示它,其中包含两个文本视图“卡片标题”和“卡片内容”。请帮我做这个。 这是我的回收器适配器:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
    private ClipboardManager myClipboard;
    private ClipData myClip;
    private Context context;





    public List<CardItemModel> cardItems;

    public RecyclerAdapter(List<CardItemModel> cardItems){
        this.cardItems = cardItems;
    }

    public static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView copyButton;
        ImageView shareButton;
        ToggleButton favButton;



        TextView title;
        TextView content;
        public ViewHolder(View itemView) {
            super(itemView);
            this.title = (TextView)itemView.findViewById(R.id.card_title);
            this.content = (TextView)itemView.findViewById(R.id.card_content);
            this.copyButton= (ImageView) itemView.findViewById(R.id.copyButton);
            this.shareButton=(ImageView) itemView.findViewById(R.id.shareButton);

            this.favButton=(ToggleButton) itemView.findViewById(R.id.favButton);

            favButton.setChecked(false);
            favButton.setBackgroundDrawable(ContextCompat.getDrawable(favButton.getContext(), R.mipmap.ic_launcher));


        }
    }



    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,parent,false);
        ViewHolder viewHolder = new ViewHolder(view);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        holder.title.setText(cardItems.get(position).title);
        holder.content.setText(cardItems.get(position).content);
        holder.copyButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){


                myClipboard = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE);


                myClip = ClipData.newPlainText("label", holder.content.getText().toString());
                myClipboard.setPrimaryClip(myClip);
                Toast.makeText(v.getContext(), "Copied to clipboard" , Toast.LENGTH_SHORT ).show();

            }
        });
        holder.shareButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Intent share = new Intent(Intent.ACTION_SEND);
                share.setType("text/plain");
                share.putExtra(Intent.EXTRA_TEXT, holder.content.getText().toString());
                v.getContext().startActivity(Intent.createChooser(share, "Share Text"));
            }
        });

        holder.favButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
            @Override
            public void onCheckedChanged(CompoundButton favButton, boolean isChecked){
                if (isChecked)
                    favButton.setBackgroundDrawable(ContextCompat.getDrawable(favButton.getContext(),R.mipmap.ic_launcher));

                else
                    favButton.setBackgroundDrawable(ContextCompat.getDrawable(favButton.getContext(), R.mipmap.ic_cart));
            }
        });
    }

    @Override
    public int getItemCount() {
        return cardItems.size();
    }
}
公共类RecyclerAdapter扩展了RecyclerView.Adapter{ 私人剪贴板管理器myClipboard; 私有clipdatamyclip; 私人语境; 公开列表目录; 公共回收适配器(列表项){ this.cardItems=cardItems; } 公共静态类ViewHolder扩展了RecyclerView.ViewHolder{ ImageView复制按钮; 图像视图共享按钮; 切换按钮FAV按钮; 文本视图标题; 文本视图内容; 公共视图持有者(视图项视图){ 超级(项目视图); this.title=(TextView)itemView.findViewById(R.id.card\u title); this.content=(TextView)itemView.findViewById(R.id.card\u content); this.copyButton=(ImageView)itemView.findViewById(R.id.copyButton); this.shareButton=(ImageView)itemView.findViewById(R.id.shareButton); this.favButton=(ToggleButton)itemView.findViewById(R.id.favButton); favButton.setChecked(false); setBackgroundDrawable(ContextCompat.getDrawable(favButton.getContext(),R.mipmap.ic_启动器)); } } @凌驾 public ViewHolder onCreateViewHolder(视图组父级,int-viewType){ 视图=LayoutFlater.from(parent.getContext()).flate(R.layout.recycler\u项,parent,false); ViewHolder ViewHolder=新的ViewHolder(视图); 返回视图持有者; } @凌驾 公共无效onBindViewHolder(最终ViewHolder,内部位置){ holder.title.setText(cardItems.get(position.title)); holder.content.setText(cardItems.get(position.content)); holder.copyButton.setOnClickListener(新视图.OnClickListener(){ 公共void onClick(视图v){ myClipboard=(ClipboardManager)v.getContext().getSystemService(Context.ClipboardManager\u服务); myClip=ClipData.newPlainText(“标签”,holder.content.getText().toString()); myClipboard.setPrimaryClip(myClip); Toast.makeText(v.getContext(),“复制到剪贴板”,Toast.LENGTH_SHORT).show(); } }); holder.shareButton.setOnClickListener(新视图.OnClickListener(){ 公共void onClick(视图v){ 意向共享=新意向(意向.行动\发送); share.setType(“文本/普通”); share.putExtra(Intent.EXTRA_TEXT,holder.content.getText().toString()); v、 getContext().startActivity(Intent.createChooser(共享,“共享文本”); } }); holder.favButton.setOnCheckedChangeListener(新的CompoundButton.OnCheckedChangeListener(){ @凌驾 检查更改后的公共无效(复合按钮FAVBUTON,布尔值已检查){ 如果(已检查) setBackgroundDrawable(ContextCompat.getDrawable(favButton.getContext(),R.mipmap.ic_启动器)); 其他的 setBackgroundDrawable(ContextCompat.getDrawable(favButton.getContext(),R.mipmap.ic_-cart)); } }); } @凌驾 public int getItemCount(){ 返回cardItems.size(); } }
在您的recyclerview adpter之前,在您的活动中尝试此功能

   RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    recyclerView.setHasFixedSize(true);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
    recyclerView.setLayoutManager(layoutManager);

    RecyclerView.Adapter adapter = new DataAdapter(title,content);
    recyclerView.setAdapter(adapter);
现在开始您的活动

ArrayList<String> title
ArrayList<String> content
SQLiteDatabase myDatabase;

content= new ArrayList<>();
title= new ArrayList<>();
现在设置recyclerview适配器

   RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
    recyclerView.setHasFixedSize(true);

    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
    recyclerView.setLayoutManager(layoutManager);

    RecyclerView.Adapter adapter = new DataAdapter(title,content);
    recyclerView.setAdapter(adapter);

在活动中写下此功能

public ArrayList<CardItemModel> getAllElements() {

    List<CardItemModel> cardItems = new ArrayList<>();       
    SQLiteDatabase db = this.getReadableDatabase();    
    Cursor cursor = db.rawQuery("select * from " + DATABASE_TABLE, null);

     try {

            try {

             // looping through all rows and adding to list

                if (cursor.moveToFirst()) {
                    do {
                        CardItemModel obj = new CardItemModel();

                        //only one column
                        obj.setTitle(cursor.getString(0));
                        obj.setContent(cursor.getString(1));

                        //you could add additional columns here..

                        cardItems.add(obj);
                    } while (cursor.moveToNext());
                }

            } finally {
                try { cursor.close(); } catch (Exception ignore) {}
            }

        } finally {
             try { db.close(); } catch (Exception ignore) {}
        }
        return cardItems;
}
public ArrayList getAllegements(){
List cardItems=new ArrayList();
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(“select*from”+数据库表,null);
试一试{
试一试{
//循环遍历所有行并添加到列表
if(cursor.moveToFirst()){
做{
CardItemModel obj=新的CardItemModel();
//只有一列
obj.setTitle(cursor.getString(0));
obj.setContent(cursor.getString(1));
//您可以在此处添加其他列。。
添加(obj);
}while(cursor.moveToNext());
}
}最后{
尝试{cursor.close();}捕获(异常忽略){}
}
}最后{
尝试{db.close();}捕获(异常忽略){}
}
回程心电图;
}
在活动的onCreate方法中调用此函数

List<CardItemModel> cardItems = getAllElements();
RecyclerAdapter adapter = new RecyclerAdapter(cardItems);
recyclerView.setAdapter(adapter);
List cardItems=getAllegements();
RecyclerAdapter适配器=新的RecyclerAdapter(cardItems);
recyclerView.setAdapter(适配器);

在加载recycler视图之前,您是否尝试从数据库中检索数据?因为您应该检索数据,然后通过传递从db检索到的列表来创建recycler视图