我有以下代码将数据从sqlite添加到listView。 (代码工作)但是,我想在listView上有静态数据,并且还具有从sqlite添加的功能。这意味着,我想做一个listView,默认情况下数据为“A”,“B”,“C”。因此,当用户点击“添加”功能时,用户可以将数据添加到sqlite中并显示到“A”,“B”,“C”数据所在的同一列表视图中。 请帮忙。
答案 0 :(得分:2)
第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步
在添加项功能中做两件事
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);
}
答案 1 :(得分:0)
您使用imageViewToByte()
将ImageView更改为byte,但R.mipmap.newsgd不是ImageView,它是资源
答案 2 :(得分:0)
在listView.setAdapter(adapter)之后添加A,B,C; - &GT; list.add(A),list.add(B),list.add(C)
前:
list.add(new Food(someId, "Singapore","4.772",R.mipmap.newsgd, ...));
希望这有帮助!
答案 3 :(得分:0)
您所做的只是: -
//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进行一些小心,因为您可能必须区分数据库中的行而不是添加的行。