我有以下代码将数据从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, ...));
希望这有帮助!