ListView заполнить в Android

1

В моем приложении я имею 1 listview, заполняя данные из базы данных с помощью arrayadapter.

Вот следующий код:

public void onClick(View v) {
                    // TODO Auto-generated method stub

                      Cursor c = db.gethouseholdTitle();
                      startManagingCursor(c); 
//                   if(cat.equals("Income"))
//                   {  
////                         System.out.println("inside if="+select);
////                         Cursor cin = db.income();
                         String[] fromdes = new String[] {db.KEY_DATE,db.KEY_DESC,db.KEY_INCOME,db.KEY_TOTAL};
                         int[] todes = new int[] {R.id.text1 ,R.id.text3,R.id.text5,R.id.text7};
                         SimpleCursorAdapter notes =
                                    new SimpleCursorAdapter(this, R.layout.columnview, c, fromdes, todes);
                        //  System.out.println("notes="+notes.getCount());
                        //  setListAdapter(notes);    
                           lv.setAdapter(notes);  

                }

Но показывая ошибку:

The constructor SimpleCursorAdapter(new View.OnClickListener(){}, int, Cursor, String[], int[]) is undefined

Что я делаю неправильно. Спасибо заранее. Я думаю, что мы не можем заполнить адаптер курсора внутри функции щелчка?

  • 1
    В onClick контекст меняется. Таким образом, вы должны указать свое YourActivityName перед тем, как поместить **this** . чтобы дать контекст вашей деятельности.
Теги:
listview

1 ответ

4
Лучший ответ

Измените эту строку:

SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.columnview, c, fromdes, todes);

в это:

SimpleCursorAdapter notes = new SimpleCursorAdapter(MyActvity.this, R.layout.columnview, c, fromdes, todes);

Здесь MyActivity должно быть фактическим названием вашей деятельности.

В то же время я SimpleCursorAdapter ваше внимание на следующий отрывок из SimpleCursorAdapter javadoc:

Этот конструктор устарел. Этот параметр не рекомендуется, так как это приводит к выполнению запросов курсора в потоке пользовательского интерфейса приложения и, следовательно, может привести к плохой отзывчивости или даже к ошибкам приложения, не отвечающим. В качестве альтернативы используйте LoaderManager с помощью CursorLoader.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню