简体   繁体   English

ListView重复最后输入

[英]ListView Repeating Last Entry

i made a listView with custom adapter its getting data from DB and binding it to list view, Adapter Picks number of records very well but it keep showing last record for all entries , for example if there are 5 records retrieved from db the list view will show last record for five time. 我用自定义适配器制作了一个listView,它从数据库获取数据并将其绑定到列表视图,适配器很好地选择了记录数,但是它一直显示所有条目的最后一条记录,例如,如果从数据库中检索到5条记录,则列表视图将显示五次最近的记录。

here is the code 这是代码

Activities SetAct = new Activities();
final ArrayList<Activities> sData = new ArrayList<Activities>();
try{
    SQLiteDatabase db = openOrCreateDatabase("iTimeDB", MODE_PRIVATE, null);
    Cursor c2 = db.rawQuery("SELECT * FROM Activities", null);   // WHERE ID = '" +ID+"'"
    for (c2.moveToFirst(); !c2.isAfterLast(); c2.moveToNext()) {
        String title =c2.getString(c2.getColumnIndex("Title"));
        String details =c2.getString(c2.getColumnIndex("Details"));
        String time =c2.getString(c2.getColumnIndex("Time"));
        String ref= c2.getString(c2.getColumnIndex("Ref"));
        String matter =c2.getString(c2.getColumnIndex("Matter"));
        String date = c2.getString(c2.getColumnIndex("Date"));
        String ID = c2.getString(c2.getColumnIndex("ID"));
        String IMEI1 =  c2.getString(c2.getColumnIndex("IMEI"));
        SetAct.setTitle(title);
        SetAct.setDetails(details);
        SetAct.setMatter(matter);
        SetAct.setRef(ref);
        SetAct.setTime(time);
        SetAct.setDate(date);
        SetAct.setID(ID);
        sData.add(SetAct);
        }
    c2.close();
    db.close();
    }
    catch(Exception e){
        e.printStackTrace();
        Log.v("YYY", e.toString());
    }
    final ListView listView = (ListView) findViewById(R.id.listView1);
    listView.setAdapter(new CustomListAdapter(this, sData));

Remove below line from outside for loop Add it in inside for loop 下面一行从外部for循环中取出 里面 添加循环

Activities SetAct = new Activities();

Example

for (c2.moveToFirst(); !c2.isAfterLast(); c2.moveToNext()) {
       Activities SetAct = new Activities();
       String title =c2.getString(c2.getColumnIndex("Title"));
       // Remaining as it is..
}

use like this. 这样使用。

I use the following pattern to read the query result. 我使用以下模式读取查询结果。

  SQLiteDatabase db = new DbHelper().getWritableDatabase();
    String sql = "SELECT ...";
    String[] args = ...;
    Cursor cs = db.rawQuery(sql, args);
    while (cs.moveToNext()) {
        // cs.getXxx(0), cs.getXxx(1)
    }
    cs.close();
    db.close();

DbHelper is a class that I extend from SQLiteOpenHelper DbHelper是我从SQLiteOpenHelper扩展的类

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM