将静态数据添加到现有列表从 sqlite 填充数据的视图



我有以下代码将数据从sqlite添加到listView。(代码有效( 但是,我希望在listView上拥有静态数据,并且还具有从sqlite添加的功能。这意味着,我想做一个默认数据"A"、"B"、"C"的列表视图。因此,当用户单击"添加"功能时,用户可以将数据添加到sqlite中并显示到"A","B","C"数据所在的同一列表中。请帮忙。

步骤 1

声明一个空的数组列表,然后添加静态数据,如您的情况 A、B、C 并用这些数据填充适配器。

ArrayList<String> arrayList=new ArrayList<>();
            arrayList.add("A");
            arrayList.add("B");
            arrayList.add("C");
MyAdapter myAdapter=new MyAdapter(this);
listview.setAdapter(myAdapter);
myAdapter.addItem(arrayList);   

在适配器中添加此函数

public void addItem(ArrayList<String> arraylist){
   this.arraylist = arraylist;
   notifyDataSetChanged();
   }

步骤 2

在您的添加项目功能中做 2 件事

1 将这些数据添加到数据库中。

2 将这些数据添加到您在步骤 1 中创建的 arraylist 中,并将其添加到适配器中,如下面的代码所示。

databaseHelper.addData("D");
arrayList.add("D");
myAdapter.addItem(arrayList);

步骤 3

在此之后,当您第二次进入屏幕时检查数据库是否有数据初始化,如果是,则修改步骤一,如下所示

    ArrayList<String> arrayList=new ArrayList<>();
                arrayList.add("A");
                arrayList.add("B");
                arrayList.add("C");
 MyAdapter myAdapter=new MyAdapter(this);
 listview.setAdapter(myAdapter);
if(databaseHelper.getDataList()!=null &databaseHelper.getDataList().size()>0{
    arrayList.addAll(databaseHelper.getDataList());
    myAdapter.addItem(arrayList);
 }else{
    myAdapter.addItem(arrayList);
 }
<</div> div class="one_answers">

你用imageViewToByte()将 ImageView 更改为字节,但 R.mipmap.newsgd 不是 ImageView,而是资源

你所做的只是:-

    //get all data
    Cursor cursor = MainActivity.sqLiteHelper.getData("SELECT * FROM FOOD");
    list.clear();
    while (cursor.moveToNext())
    {
        int id = cursor.getInt(0);
        String name = cursor.getString(1);
        String price = cursor.getString(2);
        byte [] image = cursor.getBlob(3);
        list.add(new Food(id,name,price,image));
    }
    // Adding your three items for the list
    list.add(new food(your_id_for_A,your_name_for_A,your_price_for_A,your_image_for_A));
    list.add(new food(your_id_for_B,your_name_for_B,your_price_for_B,your_image_for_B));
    list.add(new food(your_id_for_C,your_name_for_C,your_price_for_C,your_image_for_C));
    adapter.notifyDataSetChanged();

请注意,您可能需要稍微小心您提供的 id 以及随后如何处理该 id,因为您可能必须区分数据库中的行而不是添加的行。

只需在 listView.setAdapter(adapter( 之后添加 A、B、C ;-> list.add(A(、list.add(B(、list.add(C(

前任:

list.add(new Food(someId, "Singapore","4.772",R.mipmap.newsgd, ...));

希望这有帮助!

最新更新