0

我想从 sqlite 数据库中读取 'empname' 和 'place' 并列出到一个列表视图中我尝试了给定的代码,但是代码显示错误,如 'unreachable code' 任何人都可以帮助我找出问题所在。

 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();

    }
}
4

2 回答 2

0

由于该代码段,您的代码无法访问:

while(true)
{
    return;

这意味着该行后面的所有代码都无法访问...首先删除

return;

此外,IMO 声明无限循环是一种非常糟糕的做法while(true)。也删除它并尝试:

while (!cursor.isLast())

无法访问代码的另一个地方是:

break;
cursor.close();

break;您将离开该过程。cursor.close();永远无法到达。

于 2013-03-12T11:54:24.573 回答
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();


}

希望这对您有所帮助。

于 2013-03-12T12:00:49.270 回答