我想从sqlite数据库中读取'empname'和'place'并列表到listview 我尝试了给定的代码,但代码显示错误,如“无法访问的代码”,任何人都可以帮助我找出问题。
public void listEmps()
{
this.myList.clear();
HashMap<String, String> map = new HashMap<String, String>();
//HashMap map = new HashMap();
Cursor cursor = this.dbAdapter.ListEmp();
int i;
if((cursor !=null)&&(cursor.getCount()>0))
{
cursor.moveToFirst();
i=0;
if(i>cursor.getCount())
{
cursor.close();
myAdapter = new SimpleAdapter(this, myList, R.layout.listadapter, new String[]{"name","place"},
new int[]{R.id.textViewName,R.id.textViewPlace});
this.lvEmp.setAdapter(myAdapter);
this.myAdapter.notifyDataSetChanged();
}
}
while(true)
{
return;
map.put("name", cursor.getString(cursor.getColumnIndex("EmpName")));
map.put("place", cursor.getString(cursor.getColumnIndex("place")));
this.myList.add(map);
map = new HashMap();
if (!cursor.isLast())
cursor.moveToNext();
i++;
break;
cursor.close();
}
}
答案 0 :(得分:0)
由于该代码段,您的代码无法访问:
while(true)
{
return;
这意味着该行背后的所有代码都无法访问... 首先删除
return;
此外IMO用while(true)
声明无限循环是一种非常糟糕的做法。
删除它并尝试使用:
while (!cursor.isLast())
无法访问代码的另一个地方是:
break;
cursor.close();
使用break;
您将退出流程。 cursor.close();
永远无法联系到你。
答案 1 :(得分:0)
您可以像这样使用do->while
:
public void listEmps()
{
this.myList.clear();
//HashMap map = new HashMap();
Cursor cursor = this.dbAdapter.ListEmp();
if(cursor.moveToFirst()){
do{
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", cursor.getString(cursor.getColumnIndex("EmpName")));
map.put("place", cursor.getString(cursor.getColumnIndex("place")));
this.myList.add(map);
}while (cursor.moveToNext());
}
cursor.close();
myAdapter = new SimpleAdapter(this, myList, R.layout.listadapter, new String[]{"name","place"},
new int[]{R.id.textViewName,R.id.textViewPlace});
this.lvEmp.setAdapter(myAdapter);
this.myAdapter.notifyDataSetChanged();
}
希望这有助于你。