【发布时间】:2017-08-12 04:46:39
【问题描述】:
所以我最近一直在摆弄 Recycler View 和 SQLite,我担心我被难住了。
挑战是: 有一个 EditText 视图,用户可以通过简单地命名来搜索汽车,无论是按型号、制造商还是两者兼而有之:
“Hon”回归:本田思域
“c”返回本田思域、福特福克斯、雪佛兰onix
当我尝试使用多个关键字时会出现问题:
“hon c”返回:HONda civic、HONda civic、ford foCus、Chevrolet onix(我会解释双honda civic bug)
但首先,这是代码:
for(String s : query.split(" ")) {
cursor = db.rawQuery("Select * from brasil WHERE (maker LIKE '%" + s + "%' or model LIKE '%" + s + "%')" , null);
if(cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
do {
Car car = new Car(
cursor.getString(1),
cursor.getString(2),
cursor.getString(3),
cursor.getInt(4),
cursor.getInt(5)
);
cars.add(car);
} while (cursor.moveToNext());
}
}
发生双重本田思域错误的原因是: "Hon c" 2 个字符串,所以 2 个循环 它在 honda 中找到 hon,在 civic 中找到 c,这两种情况都被添加到返回数据的数组中。
现在我想要发生的事情: “亲爱的c” 在 honda civic 中找到“hon”和“c”,因此将其添加。
在其他人身上找到“c”但没有“hon”,所以他们不应该被添加。
【问题讨论】: