更新:问题已修复 - ActionBar涵盖了名单上的第一个项目。
解决方案: Android AppBarLayout overlaps listview
在我的程序中,我正在从数据库中检索数据并使用列表视图显示它。 但是,在此过程中始终会跳过第一行元素,并且显示从第二行开始。
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);
}
如何从第一行显示? 感谢任何帮助。谢谢。
编辑:我已经尝试过使用&#39; do-while&#39;和一个&#39; for循环&#39;,所有这些都给出相同的结果。
答案 0 :(得分:1)
尝试更改
while(res.moveToNext()){
buffer.add(res.getString(1));
};
到
编辑:更改时间,使其在以下后递增:
do {
buffer.add(res.getString(1));
} while (cursor.moveToNext());
答案 1 :(得分:0)
就个人而言,我建议在使用数据库时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);
答案 2 :(得分:0)
试试这个代码可能对使用游标从db中获取数据很有用。
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;
}