android sqlite查询失败,android sqlite查询无法返回?

在Android应用中,遇到一个问题:SQLite查询结果未能正确填充到列表视图。查询函数DBQuery返回了一个Item对象,但在填充列表视图时只显示了一行,而预期应显示多行。可能的原因是每次查询后都创建了一个新的Item对象,导致列表视图只显示了最后一个查询结果。解决方案可能是遍历查询结果并为每个结果创建一个新的Item实例,然后将其添加到列表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我有一个sqlite数据库,我想通过数据库查询和填充列表视图与返回,但列表视图显示只有一行很多返回多行,也没有错误。 Item是一个包含setter和getter的类。android sqlite查询无法返回?

我用这个方法用于查询:

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

我不知道'Item'是什么,但是你用'item = new Item()'设置每个游标查询一个新游标。而且我无法看到你在哪里添加这个新项目,所以我想它总是被覆盖,结果只是一个项目。 –

+0

DBQuery只是返回一个项目。我不能看到一种方法,你正在循环并在每个循环中添加一个新项目。 –

+0

项目是一个包含getters和setter的类,是否有问题? –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值