Что не так с моим кодом при заполнении Listview из SQLite? - PullRequest
0 голосов
/ 11 марта 2011

В соответствии с моим кодом для отображения данных в виде списка из базы данных. Но это не сработает и вылетит из моего приложения. Пожалуйста, дайте идеальное решение этой проблемы.

Мой код ......

        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.deletestudent);
           // DisplayStudent();


        ArrayList<String > arrlst=new ArrayList<String>();
         ListView lst_stu=(ListView) findViewById(R.id.ListView01);

            db.open();
            Cursor cur=db.GetStudent();

            for (int i=0;i<cur.getCount();i++)
            {
                cur.moveToFirst();

                String stunm=cur.getString(1);
                arrlst.add(1, stunm);
                lst_stu.setAdapter((ListAdapter) arrlst);

                 db.close();
            }

    }

Ответы [ 2 ]

2 голосов
/ 11 марта 2011
        for (int i=0;i<cur.getCount();i++)
        {
            cur.moveToFirst();

            String stunm=cur.getString(1);
            arrlst.add(1, stunm);
            lst_stu.setAdapter((ListAdapter) arrlst);

             db.close();
        }

Проблема в том, что вы закрываете курсор в первой итерации.

Дайте идеальное решение для этой проблемы.

Ты выглядишь как мой босс, за исключением того, что он платит 20 долларов в час ....

Как бы то ни было, в твоем коде много плохих вещей, в основном потому, что ты не понимаешь, каккурсор работает:

  • Почему вы вызываете moveToFirst на каждой итерации?Имеет ли это смысл для вас?
  • Почему вы закрываете курсор внутри for?
  • Почему вы устанавливаете адаптер на каждую итерацию?
  • Почему вы используетеадаптер массива вместо CursorAdapter?
1 голос
/ 11 марта 2011

Пожалуйста, попробуйте ниже код

try
    {
        Cursor cursor = null;

        db.OpenDatabase();
        cursor = db.GetStudent();

        // Here if condition check wheather the cursor returns record or not.
        // If cursor has some records then it will return non zero number .

        if (cursor.getCount() != 0) 
        {
            // Here if condition check wheather the cursor move to first record or not
            // If it moves to first record then it will return true.
            if (cursor.moveToFirst()) 
            {
                do 
                {
                    arrlst.add(cursor.getInt(cursor.getColumnIndex("your_field_in_database")).trim());

                }while (cursor.moveToNext());
            }
        }

        cursor.close();
        db.closeDatabase();
        lst_stu.setAdapter((ListAdapter) arrlst);
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...