Java ListView不显示第一行值

Java ListView不显示第一行值,java,android,android-sqlite,Java,Android,Android Sqlite,更新:问题已修复- ActionBar涵盖了列表中的第一项 解决方案: 在我的程序中,我从数据库中检索数据并使用列表视图显示它。 但是,在该过程中始终跳过第一行元素,并且显示从第二行开始 public void displaydata(){ Cursor res = myDb.getAllData(); lv = (ListView) findViewById(R.id.idListView); if(res.getCount() == 0){ //sho

更新:问题已修复- ActionBar涵盖了列表中的第一项

解决方案:

在我的程序中,我从数据库中检索数据并使用列表视图显示它。 但是,在该过程中始终跳过第一行元素,并且显示从第二行开始

public void displaydata(){
    Cursor res = myDb.getAllData();
    lv = (ListView) findViewById(R.id.idListView);
    if(res.getCount() == 0){
        //show message
        return;
    }
    ArrayList<String> buffer = new ArrayList<>();
    while(res.moveToNext()){
        buffer.add(res.getString(1));
    };
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,buffer);
    lv.setAdapter(adapter);
}
public void displaydata(){
Cursor res=myDb.getAllData();
lv=(ListView)findViewById(R.id.idListView);
如果(res.getCount()==0){
//显示消息
返回;
}
ArrayList缓冲区=新的ArrayList();
while(res.moveToNext()){
add(res.getString(1));
};
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,缓冲区);
低压设置适配器(适配器);
}
如何使其从第一行开始显示? 谢谢你的帮助

编辑:我已经尝试了使用“do while”和“for loop”的所有建议答案,它们都给出了相同的结果。

尝试更改

while(res.moveToNext()){
        buffer.add(res.getString(1));
    };

编辑:更改while,使其在以下时间之后递增:

do {
    buffer.add(res.getString(1));
} while (cursor.moveToNext());

就个人而言,我建议在使用数据库时使用
CursorAdapter

lv = (ListView) findViewById(R.id.idListView);

String from = { COLUMN_NAME };
int[] to = { android.R.id.text1 };

SimpleCursorAdapter adapter = 
    new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, 
          myDb.getAllData(), 
          from, to);
lv.setAdapter(adapter);

尝试一下这段代码对于使用游标从数据库中获取数据可能很有用

  public ArrayList<BasicInfo> getFetchBasicInfo() {

    ArrayList<BasicInfo> data = new ArrayList<BasicInfo>();

    String sql = "select * from basic_info;

    Cursor c = fetchData(sql);

    if (c != null) {
        while (c.moveToNext()) {

            String FirstName = c.getString(c.getColumnIndex("first_name"));

            String LastName = c.getString(c.getColumnIndex("last_name"));
            String Sabcription = c.getString(c
                    .getColumnIndex("salutation_id"));
            data.add(new BasicInfo(FirstName, LastName));
        }
        c.close();
    }
    return data;
}
public ArrayList getFetchBasicInfo(){
ArrayList数据=新的ArrayList();
String sql=“从基本信息中选择*;
游标c=获取数据(sql);
如果(c!=null){
while(c.moveToNext()){
String FirstName=c.getString(c.getColumnIndex(“first_name”));
字符串LastName=c.getString(c.getColumnIndex(“last_name”);
String sascription=c.getString(c
.getColumnIndex(“称呼_id”);
data.add(新的BasicInfo(FirstName,LastName));
}
c、 close();
}
返回数据;
}

我相信这是因为
res.moveToNext()
转到下一行,因此索引0被跳过相关:您的可能副本确实应该使用游标适配器,而不是尝试将所有内容加载到ArrayList/arrayadapter
do{…}while(res.moveToNext())的可能副本;
最好避免重复
getCount()
calls@DerekBaxter不起作用,因为我需要使用“res.moveToNext”使“res”指向下一个数据项。它说“SimpleCursorAdapter”是不受欢迎的,没错,但这并不意味着这不起作用