从sqlite数据库读取数据并通过hashmap添加到列表视图

时间:2013-03-12 11:50:52

标签: android sqlite listview cursor

我想从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();

    }
}

2 个答案:

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


}

希望这有助于你。