我已经创建了一个数据库和arraylist android passing variables from inside database class,现在我正在尝试使用List<EntryEffectiveRate> allEffectiveRate = db.getAllEffectiveRates();
从数组列表中获取一个或一些值,以获取数据库中的所有数据列表,但是我只能使用循环来获取所有这些:
// getting all ER
Log.d("Get ER", "GEtting All ER");
List<EntryEffectiveRate> allEffectiveRate = db.getAllEffectiveRates();
for (EntryEffectiveRate ER : allEffectiveRate) {
Log.d("ER_ids", String.valueOf(ER.getERId()));
Log.d("ER_rates", ER.getERKondisi());
Log.d("ER_tenors", String.valueOf(ER.getERTenor()));
Log.d("ER_rates", String.valueOf(ER.getERrate()));
}
如何从数组列表中只获取一个或几个值?
提前感谢。
解决方案在上面的链接上,检查答案。
答案 0 :(得分:4)
我发布了一个我刚在项目中编写的示例方法,肯定会根据您的要求。
public ArrayList<SomeModelClass> GetCatagoriesName() {
close();
database = this.dbOpenHelper.getReadableDatabase();
ArrayList<SomeModelClass> catagory_List = new ArrayList<SomeModelClass>();
String selectQuery = " SELECT " + KEY_CATAGORIES + " FROM "
+ TABLE_CATAGORIES;
Cursor cursor = database.rawQuery(selectQuery, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
catagory_List.add(cursor.getString(0));
} while (cursor.moveToNext());
}
}
return catagory_List;
}
另一方面,只需从位置为0的arraylist中获取它,无需迭代循环。
答案 1 :(得分:3)
只需创建一个新函数,该函数接受一个可以传递给查询的where子句的参数。
执行此操作后,您不必对ArrayList
课程中返回的DatabaseMaster
进行任何过滤。
您可以创建一个不同的函数来过滤您需要的每个数据库条目。
例如,要过滤某个KEY_ER_USEDORNEW
值,新函数将是这样的:
public List<EntryEffectiveRate> getSomeERates(String USEDORNEW) {
List<EntryEffectiveRate> EffectiveRates = new ArrayList<EntryEffectiveRate>();
String selectQuery = "SELECT * FROM " + TABLE_EFFECTIVE_RATE + " where " + KEY_ER_USEDORNEW + " = ?";
Log.e(LOG, selectQuery);
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery(selectQuery, new String[] {USEDORNEW});
// looping through all rows and adding to list
if (c.moveToFirst()) {
do {
EntryEffectiveRate ergt = new EntryEffectiveRate();
ergt.setERKondisi(c.getString(c
.getColumnIndex(KEY_ER_USEDORNEW)));
// add
EffectiveRates.add(ergt);
} while (c.moveToNext());
}
// db.close();
c.close();
return EffectiveRates;
}
要从您的Activity调用此方法,您可以将过滤器值作为参数传递:
String USEDORNEW = "Baru";
List<EntryEffectiveRate> someEffectiveRates = db.getSomeERates(USEDORNEW);
for (EntryEffectiveRate ER : someEffectiveRates) {
Log.d("ER_rates", ER.getERKondisi());
}
答案 2 :(得分:1)
你可以使用......
List.get(index);
从列表中获取特定值或一个值而不循环它的方法。但是如果你想要多于一个值,那么你必须循环它。
答案 3 :(得分:1)
使用以下代码从arraylist中获取一个值
List<EntryEffectiveRate> allEffectiveRate = db.getAllEffectiveRates();
EntryEffectiveRate ER =allEffectiveRate.get(position);
Log.d("ER_ids", String.valueOf(ER.getERId()));
Log.d("ER_rates", ER.getERKondisi());
Log.d("ER_tenors", String.valueOf(ER.getERTenor()));
Log.d("ER_rates", String.valueOf(ER.getERrate()));
答案 4 :(得分:0)
//使用for循环,如下所示
for(int i=0;i<allEffectiveRate.size();i++)
{
EntryEffectiveRate ER =allEffectiveRate.get(i);
Log.d("ER_ids"String.valueOf(ER.getERId()) ;
Log.d("ER_rates", ER.getERKondisi());
Log.d("ER_tenors", String.valueOf(ER.getERTenor()));
Log.d("ER_rates", String.valueOf(ER.getERrate()));
}
//如果在那之后你不能获得propar数据那么你的ur方法问题//db.getAllEffectiveRates();