Android:如何在listview中自动显示带有复选框的Sqlite数据库

Android:如何在listview中自动显示带有复选框的Sqlite数据库,android,checkbox,android-listview,Android,Checkbox,Android Listview,在我的应用程序中,Diaglogbox中的userinput数据存储在Sqlite中,并希望在listview中显示这些数据以及复选框 例如: 我将Userinput存储在sqlite中,但我不知道如何在Listview中显示这些保存的名称以及复选框 如何实现这一点,我是新的安卓 数据库: //在Listview中显示这些数据以及复选框 // Table 2 private static final String TABLE2_NAME = "listitem_name&q

在我的应用程序中,Diaglogbox中的userinput数据存储在Sqlite中,并希望在listview中显示这些数据以及复选框

例如:

我将Userinput存储在sqlite中,但我不知道如何在Listview中显示这些保存的名称以及复选框

如何实现这一点,我是新的安卓

数据库:

//在Listview中显示这些数据以及复选框

 // Table 2
    private static final String TABLE2_NAME = "listitem_name";
    public static final String COLUMN1_ID = "I_ID";
    public static final String COLUMN2_TITLE = "LISTITEMS_NAME";

 onCreate(){
 String query1 =
                "CREATE TABLE IF NOT EXISTS " + TABLE2_NAME + "("
                        + COLUMN1_ID + " INTEGER PRIMARY KEY ,"
                        + COLUMN2_TITLE + "  TEXT ,"
                        +  COLUMN_ID + " INTEGER, " + "FOREIGN KEY("+
                        COLUMN_ID +") "
                        + "REFERENCES " + TABLE_NAME +"("+COLUMN_ID +")"+ ");";

        sqLiteDatabase.execSQL(query1);
    }

     Cursor readlistAllData() {
            String query = "SELECT * FROM " + TABLE2_NAME;
            SQLiteDatabase db = this.getReadableDatabase();
    
            Cursor cursor = null;
            if (db != null) {
                cursor = db.rawQuery(query, null);
            }
            return cursor;
        }
活动类

 public class AddItems extends AppCompatActivity {
    
        Toolbar mToolbar;
        DatabaseHelper myDB;
        ArrayList<String> listitems;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add_items);
    
            mToolbar = findViewById(R.id.toolbar);
            setSupportActionBar(mToolbar);
    
            FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_button);
    
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    ShowPopup();
    
                }
            });
    
            myDB = new DatabaseHelper(AddItems.this);
    
            listitems = new ArrayList<>();
    
            DisplayList();
    
        }
    
        private void DisplayList(){
    
            Cursor cursor = myDB.readlistAllData();
            if (cursor.getCount() == 0) {
    
                Toast.makeText(this, "No Data.", Toast.LENGTH_SHORT).show();
    
            } else {
                while (cursor.moveToNext()) {
    
                    listitems.add(cursor.getString(1));
                }
            }
        }
    
        private void ShowPopup() {
            final Dialog dialog = new Dialog(this);
            dialog.setContentView(R.layout.custom_dialog);
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            dialog.show();
            final EditText lname = dialog.findViewById(R.id.list_Edit_txt);
            Button add = dialog.findViewById(R.id.add);
            Button cancel = dialog.findViewById(R.id.cancel);
            cancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    dialog.dismiss();
                }
            });
    
            add.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    // Toast.makeText(AddItems.this, "add called", Toast.LENGTH_SHORT).show();
    
                    String name = lname.getText().toString();
                    if (!TextUtils.isEmpty(lname.getText().toString())) {
                        DatabaseHelper db = new DatabaseHelper(getApplicationContext());
                        db.itemlist(name);
                        Toast.makeText(AddItems.this, "Added Sucessfully !", Toast.LENGTH_SHORT).show();
                        ShowPopup();
    
                    } else
                        Toast.makeText(AddItems.this, "The name cannot be empty!", Toast.LENGTH_LONG).show();
    
    
                }
            });
        }
公共类附加项扩展了AppCompative活动{
工具栏工具栏;
数据库助手myDB;
ArrayList列表项;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u add\u items);
mToolbar=findviewbyd(R.id.toolbar);
设置支持操作栏(mToolbar);
FloatingActionButton fab=(FloatingActionButton)findViewById(R.id.fab_按钮);
fab.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
ShowPopup();
}
});
myDB=新数据库助手(AddItems.this);
listitems=new ArrayList();
显示列表();
}
私有void DisplayList(){
Cursor Cursor=myDB.readlistaldata();
if(cursor.getCount()==0){
Toast.makeText(这是“无数据”,Toast.LENGTH_SHORT).show();
}否则{
while(cursor.moveToNext()){
add(cursor.getString(1));
}
}
}
私有void ShowPopup(){
最终对话框=新对话框(本);
setContentView(R.layout.custom_对话框);
dialog.getWindow().setBackgroundDrawable(新的ColorDrawable(Color.TRANSPARENT));
dialog.show();
final EditText lname=dialog.findviewbyd(R.id.list\u Edit\u txt);
按钮添加=dialog.findviewbyd(R.id.add);
按钮取消=dialog.findviewbyd(R.id.cancel);
cancel.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
dialog.dismise();
}
});
add.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//Toast.makeText(AddItems.this,“add called”,Toast.LENGTH_SHORT.show();
字符串名称=lname.getText().toString();
如果(!TextUtils.isEmpty(lname.getText().toString())){
DatabaseHelper db=新的DatabaseHelper(getApplicationContext());
db.项目清单(名称);
Toast.makeText(AddItems.this,“添加成功!”,Toast.LENGTH_SHORT.show();
ShowPopup();
}否则
Toast.makeText(AddItems.this,“名称不能为空!”,Toast.LENGTH_LONG.show();
}
});
}
您可以使用一个类来实现此功能。 此外,您还可以将RecyclerView与RecyclerView适配器一起使用。 使用RecyclerView:

在中使用RecyclerView提供了一种分步方法

下面是适合您的场景的调整代码

RadioAdapter.java
公共类RadioAdapter扩展了RecyclerView.Adapter{
public int mSelectedItem=-1;
公开名单;
私有上下文;
公共无线电适配器(上下文、列表项){
mContext=上下文;
mItems=项目;
}
@凌驾
public void onBindViewHolder(RadioAdapter.ViewHolder-ViewHolder,final int i){
viewHolder.mRadio.setChecked(i==mSelectedItem);
viewHolder.mText.setText(mItems.get(i));
}
@凌驾
public int getItemCount(){
返回mItems.size();
}
@凌驾
公共视图持有者onCreateViewHolder(视图组视图组,int i){
LayoutFlater充气机=LayoutFlater.from(mContext);
最终视图=充气机。充气(R.layout.list\u View\u项目,视图组,false);
返回新的ViewHolder(视图);
}
类ViewHolder扩展了RecyclerView.ViewHolder{
公共无线按钮;
公共文本查看多行文本;
公共视图支架(最终视图充气){
超级(充气);
mText=(TextView)充气.findViewById(R.id.text);
mRadio=(无线按钮)充气。查找可视id(R.id.radio);
View.OnClickListener clickListener=新建视图。OnClickListener(){
@凌驾
公共void onClick(视图v){
mSelectedItem=getAdapterPosition();
notifyDataSetChanged();
}
};
setOnClickListener(clickListener);
mRadio.setOnClickListener(单击Listener);
}
}

}
请注意,此代码来源的网站拥有“版权©2020 joshskeen.com”。我没有找到实际的许可证。是的。我添加了对该网站的引用。我希望没有问题。我看到您有一个引用,但是..说“不要复制外部来源的完整文本;相反,使用他们的文字和想法来支持您自己的内容”.在版权问题上,我不是律师,但我不确定一个人是否可以使用受版权保护的材料,即使它链接到它。如果它被复制或抄送,我肯定不会有法律问题。我明白了。你会建议我如何在没有法律问题的情况下修改这个答案?博客的内容实际上解决了OP的问题,这就是我添加的原因一开始我对链接进行了修改。不幸的是,我不是Android开发者,所以我