0

sqliteデータベースから「empname」と「place」を読み取り、リストビューにリストしたいのですが、指定されたコードを試しましたが、コードに「到達不能コード」のようなエラーが表示され、問題を見つけるのに役立ちます。

 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

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 に答える
0

あなたのコードは、そのコードスニペットのために到達できません:

while(true)
{
    return;

つまり、その行の背後にあるすべてのコードに到達できません...まず、

return;

さらに、IMO で無限ループを宣言するのは非常に悪い習慣while(true)です。それも削除して、次で試してください:

while (!cursor.isLast())

到達不能なコードの別の場所は次のとおりです。

break;
cursor.close();

break;プロセスを終了します。cursor.close();到達することはできません。

于 2013-03-12T11:54:24.573 に答える