我有一个sqlite数据库,我想通过db查询并使用return填充listview,但listview只显示一行多次返回多行并且也没有错误。 Item是一个包含setter和getter的类。
我将此方法用于查询:
fillList2(edtSeach.getQuery().toString().toLowerCase(),"zankodict", "id","eng",Long.valueOf(1),Long.valueOf(1794));
这是这个方法:
private void fillList2(String keyword,String table, String columnn,String column2,Long num1,Long num2) {
if (keyword.equals(BuildConfig.FLAVOR)) {
this.myList = new ArrayList();
} else if (keyword.toCharArray().length < 2) {
myList.clear();
myList.add(DBQuery.a(keyword,table,columnn,column2,num1,num2));
} else {
myList.clear();
myList.add(DBQuery.a(keyword,table,columnn,column2,num1,num2));
}
myListView.setAdapter(new AdapterEN(getActivity(), R.layout.single_row, myList,keyword));
}
}
DBQUery.class
import android.database.Cursor;
public class DBQuery {
private static Item itemm, itemm2;
private static Cursor cursor10;
public static Item a(String keyword,String table, String columnn,String column2, Long num1,Long num2) {
C0101f.getDatabaseHelper().openDatabase();
cursor10 = C0101f.getDatabaseHelper().QueryData("select * from "+ table +" WHERE "+ columnn +" between "+num1+" and "+num2+ " And " +column2+ " LIKE '"+ keyword + "%'");
itemm2 = cur(table);
C0101f.getDatabaseHelper().closeDataBase();
return itemm2;
}
public static Item cur(String table){
switch (table) {
case "zankodict":
if (cursor10 != null) {
if (cursor10.moveToFirst()) {
do {
itemm = new Item();
itemm.setId(cursor10.getString(0));
itemm.setEng(cursor10.getString(1));
} while (cursor10.moveToNext());
}
}
break;
case "kudict":
if (cursor10 != null) {
if (cursor10.moveToFirst()) {
do {
itemm = new Item();
itemm.setId(cursor10.getString(0));
itemm.setKurd(cursor10.getString(1));
itemm.setId2(cursor10.getLong(2));
} while (cursor10.moveToNext());
}
}
break;
case "ardict":
if (cursor10 != null) {
if (cursor10.moveToFirst()) {
do {
itemm = new Item();
itemm.setId(cursor10.getString(0));
itemm.setAr(cursor10.getString(1));
itemm.setId2(cursor10.getLong(2));
} while (cursor10.moveToNext());
}
}
break;
}
return itemm;
}
}
答案 0 :(得分:0)
我添加了一个数组列表,每次循环时都会向其添加Items。
import android.database.Cursor;
import java.util.ArrayList;
/**
* Created by RRR on 11/12/2016.
*/
public class DBQuery {
public static ArrayList<Item> myList = new ArrayList<Item>();
public static ArrayList<Item> myList2 = new ArrayList<Item>();
private static Item itemm;
private static Cursor cursor10;
public static ArrayList<Item> a(String keyword,String table, String columnn,String column2, Long num1,Long num2) {
C0101f.getDatabaseHelper().openDatabase();
cursor10 = C0101f.getDatabaseHelper().QueryData("select * from "+ table +" WHERE "+ columnn +" between "+num1+" and "+num2+ " And " +column2+ " LIKE '"+ keyword + "%'");
myList2 = cur(table);
C0101f.getDatabaseHelper().closeDataBase();
return myList2;
}
public static ArrayList<Item> cur(String table){
switch (table) {
case "zankodict":
if (cursor10 != null) {
if (cursor10.moveToFirst()) {
do {
itemm = new Item();
itemm.setId(cursor10.getString(0));
itemm.setEng(cursor10.getString(1));
myList.add(itemm);
} while (cursor10.moveToNext());
}
}
break;
case "kudict":
if (cursor10 != null) {
if (cursor10.moveToFirst()) {
do {
itemm = new Item();
itemm.setId(cursor10.getString(0));
itemm.setKurd(cursor10.getString(1));
itemm.setId2(cursor10.getLong(2));
myList.add(itemm);
} while (cursor10.moveToNext());
}
}
break;
case "ardict":
if (cursor10 != null) {
if (cursor10.moveToFirst()) {
do {
itemm = new Item();
itemm.setId(cursor10.getString(0));
itemm.setAr(cursor10.getString(1));
itemm.setId2(cursor10.getLong(2));
myList.add(itemm);
} while (cursor10.moveToNext());
}
}
break;
}
return myList;
}
}