Попытка использовать просмотр списка в .xml с курсором, но без ListActivity - PullRequest
0 голосов
/ 18 марта 2011

Я поставлен в тупик относительно того, как правильно реализовать адаптер, который может извлекать столбец данных из моей базы данных sqlite и добавлять его в просмотр списка (на основе предоставленного Android множественного флажка).Все существующие примеры используют следующее:

   public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         String[] myList = new String[] {"Hello","World","Foo","Bar"};              
         ListView lv = new ListView(this);
         lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myList));
         setContentView(lv);
         }

Однако мне не нужна строка.Вот мой код:

public class ListGroups extends Activity {
    /** Called when the activity is first created. */
    private ExpensesDbAdapter mDBHelper;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view);
        ListView lv = (ListView)findViewById(R.id.list1);
        mDBHelper = new ExpensesDbAdapter(ListGroups.this);
        mDBHelper.open();
        Cursor c = mDBHelper.fetchAllGroups();
        startManagingCursor(c);
        String[] from = new String[] {ExpensesDbAdapter.KEY_GROUPNAME};
        int[] to = new int[] {R.id.groupname};
        ListAdapter ladapter = new SimpleCursorAdapter(ListGroups.this, R.layout.grouprow, c, from, to);
        lv.setAdapter(ladapter);
        lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
    }

}

Вот файл view.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:gravity="center">
    <TextView android:id="@+id/header01"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent" 
              android:gravity="center"
              android:text="Select Groups"/>
    <ListView
        android:id="@+id/list1"
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/footerbutton01"
        android:text="Get Expense Reports" />
</LinearLayout>

И, поскольку SimpleCursorAdapter запрашивает его, вот grouprow.xml:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/groupname"
     android:layout_width="match_parent"
     android:layout_height="?android:attr/listPreferredItemHeight"
     android:textAppearance="?android:attr/textAppearanceLarge"
     android:gravity="center_vertical"
     android:checkMark="?android:attr/listChoiceIndicatorMultiple"
     android:paddingLeft="6dip"
     android:paddingRight="6dip"/>

Если я использую ListActivity и не вызываю макет при создании, я могу заставить его работать, но мне нужны обертки вокруг этого ListView, и я не могу заставить методы .addHeader и .addFooter работать на меня,Будет полезна любая помощь в создании правильного адаптера.

1 Ответ

0 голосов
/ 19 марта 2011

Ответил с некоторой помощью.Некоторые вещи были неправильными, в основном в list.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:gravity="center">
    <TextView android:id="@+id/header01"
              android:orientation="vertical"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent" 
              android:gravity="center"
              android:text="Select Groups"/>
    <ListView
        android:id="@android:id/android:list"
        android:layout_width="match_parent"
        android:layout_height="wrap_around"
        android:layout_weight="1" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/footerbutton01"
        android:text="Get Expense Reports" />
</LinearLayout>

Это позволяет вам связать ListView с этим элементом в xml.У вас нет имени для него, но вы можете использовать getListView () в методе onCreate для доступа к нему.

...