从android中的sqlite数据库中过滤一些值

时间:2014-04-22 13:50:15

标签: android

您好我从数据库中获取了所有数据,现在我必须通过匹配其电子邮件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();
        }

2 个答案:

答案 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());
                }