Java ListView不显示第一行值
更新:问题已修复- ActionBar涵盖了列表中的第一项 解决方案: 在我的程序中,我从数据库中检索数据并使用列表视图显示它。 但是,在该过程中始终跳过第一行元素,并且显示从第二行开始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
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/arrayadapterdo{…}while(res.moveToNext())的可能副本;
最好避免重复getCount()
calls@DerekBaxter不起作用,因为我需要使用“res.moveToNext”使“res”指向下一个数据项。它说“SimpleCursorAdapter”是不受欢迎的,没错,但这并不意味着这不起作用