您好我从数据库中获取了所有数据,现在我必须通过匹配其电子邮件ID来过滤数据并在列表视图中显示过滤后的数据但我面临问题,因为我一次又一次地重复第一个值。请帮助我,我是Android新手,我坚持这个。 我也发送了我的代码。
for(int i = 0;i<C_parts.size();i++){
if(C_parts.get(i).email.toString().equals(Global.useremailid.toString()))
Cursor cursor = db.query(TABLE_ACCOUNT, new String[] { ACCT_NAME,
ACCT_HEAD_NAME, OPEN_BAL, EMAIL }, EMAIL + "=?",
new String[] { String.valueOf(Global.useremailid) }, null, null, null,
null);
System.out.println("value of cursor:->"+cursor);
if (cursor != null)
cursor.moveToNext();
String acc_name = cursor.getString(0);
String acc_head_name = cursor.getString(1);
String openbal = cursor.getString(2);
String amail=cursor.getString(3);
System.out.println("bfr accountid:->"+acc_name);
System.out.println("bfr accountname:->"+acc_head_name);
System.out.println("bfr headname:->"+openbal);
C_parts1.add(new Account(acc_name,acc_head_name,openbal, amail));
}
}
c_adapter = new CustomAdapter(this, R.layout.list_item, C_parts1);
if (list1 == null)
list1 = (ListView) findViewById(R.id.lv1);
list1.setAdapter(c_adapter);
registerForContextMenu(list1);
list1.invalidate();
}
答案 0 :(得分:0)
更改
for(int i = 0;i<C_parts.size();i++){
if(C_parts.get(i).email.toString().equals(Global.useremailid.toString()))
到
for(int i = 0;i<C_parts.size();i++){
if(C_parts.get(i).email.toString().equals(Global.useremailid.toString())) {
只有在等于时才执行Cursor代码,但是其他代码将始终执行,并且由于光标与上一次迭代相同,因此它将重复相同的数据。
这是因为如果你不在{ }
之后添加if
,那么第一行将成为if的一部分。
同样在这里
if (cursor != null)
cursor.moveToNext();
String acc_name = cursor.getString(0);
String acc_head_name = cursor.getString(1);
String openbal = cursor.getString(2);
String amail=cursor.getString(3);
System.out.println("bfr accountid:->"+acc_name);
System.out.println("bfr accountname:->"+acc_head_name);
System.out.println("bfr headname:->"+openbal);
C_parts1.add(new Account(acc_name,acc_head_name,openbal, amail));
}
在{
之后添加if (cursor != null)
,并确保每个{}
都可以。
答案 1 :(得分:0)
while(cursor.moveToNext()){
String acc_name = cursor.getString(0);
String acc_head_name = cursor.getString(1);
String openbal = cursor.getString(2);
String amail=cursor.getString(3);
System.out.println("bfr accountid:->"+acc_name);
System.out.println("bfr accountname:->"+acc_head_name);
System.out.println("bfr headname:->"+openbal);
System.out.println("bfr email:->"+amail);
C_parts1.add(new Account(acc_name,acc_head_name,openbal, amail));
System.out.println("value of c_parts1 on for loop:->"+C_parts1.toString());
}