Android ListView重复最后一项

Android ListView重复最后一项,android,listview,custom-adapter,Android,Listview,Custom Adapter,我制作了一个带有自定义适配器的listView,它从DB获取数据并绑定到列表视图,适配器可以很好地选择记录数,但它会一直显示所有条目的最后一条记录,例如,如果从DB检索到5条记录,列表视图将显示最后一条记录5次 这是密码 Activities SetAct = new Activities(); final ArrayList<Activities> sData = new ArrayList<Activities>(); try{ SQLiteDatabase

我制作了一个带有自定义适配器的listView,它从DB获取数据并绑定到列表视图,适配器可以很好地选择记录数,但它会一直显示所有条目的最后一条记录,例如,如果从DB检索到5条记录,列表视图将显示最后一条记录5次

这是密码

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));
Activities SetAct=新活动();
最终ArrayList sData=新ArrayList();
试一试{
SQLiteDatabase db=openOrCreateDatabase(“iTimeDB”,MODE_PRIVATE,null);
游标c2=db.rawQuery(“从活动中选择*,null);//其中ID='“+ID+””
对于(c2.moveToFirst();!c2.isAfterLast();c2.moveToNext()){
字符串标题=c2.getString(c2.getColumnIndex(“标题”);
字符串详细信息=c2.getString(c2.getColumnIndex(“详细信息”);
字符串时间=c2.getString(c2.getColumnIndex(“时间”);
String ref=c2.getString(c2.getColumnIndex(“ref”));
字符串物质=c2.getString(c2.getColumnIndex(“物质”);
字符串日期=c2.getString(c2.getColumnIndex(“日期”);
字符串ID=c2.getString(c2.getColumnIndex(“ID”));
字符串IMEI1=c2.getString(c2.getColumnIndex(“IMEI”);
SetAct.setTitle(标题);
SetAct.setDetails(细节);
SetAct.setMatter(物质);
SetAct.setRef(ref);
SetAct.setTime(时间);
SetAct.setDate(日期);
SetAct.setID(ID);
sData.add(SetAct);
}
c2.关闭();
db.close();
}
捕获(例外e){
e、 printStackTrace();
Log.v(“YYY”,例如toString());
}
最终ListView ListView=(ListView)findViewById(R.id.listView1);
setAdapter(新的CustomListAdapter(this,sData));

外循环的行下方删除内循环的添加

Activities SetAct = new Activities();
范例

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

外部为循环删除下面的行添加内部为循环

Activities SetAct = new Activities();
范例

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

外部为循环删除下面的行添加内部为循环

Activities SetAct = new Activities();
范例

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

外部为循环删除下面的行添加内部为循环

Activities SetAct = new Activities();
范例

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

我使用以下模式读取查询结果

  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是我从SQLiteOpenHelper扩展而来的一个类

我使用以下模式读取查询结果

  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是我从SQLiteOpenHelper扩展而来的一个类

我使用以下模式读取查询结果

  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是我从SQLiteOpenHelper扩展而来的一个类

我使用以下模式读取查询结果

  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是我从SQLiteOpenHelper扩展而来的一个类。亲爱的,我已签入日志,查询正确返回所有行。亲爱的,我已签入日志,查询正确返回所有行。亲爱的,查询没有问题。我已签入日志,查询正确返回所有行正确返回所有行…亲爱的,查询没有问题,我已签入日志,查询正确返回所有行。