Работа простого курсорадаптера

1
Cursor c = managedQuery(People.CONTENT_URI,null,null,null,People.NAME);
String[] cols = new String[]{People.NAME};
int[] views = new int[]{android.R.id.text1};
SimpleCursorAdapter sca = new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,c,cols,views);
listview.setAdapter(adapter);

Я использую этот фрагмент кода для подключения моего ListView с Cursor.

Я хочу спросить, что

String[] cols = new String[]{People.NAME};
int[] views = new int[]{android.R.id.text1};

точно делает??

и, пожалуйста, объясните аргументы, необходимые для конструктора SimpleCursorAdapter

Теги:
cursor
android-context
simplecursoradapter

2 ответа

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

Это карта, сообщающая адаптеру, какие столбцы от вашего курсора использовать, чтобы заполнить виджеты в вашем макете.

Они используются в указанном порядке. Данные в первом столбце, перечисленные в массиве from (вы назвали его cols), перейдут в первый идентификатор, указанный в массиве (вы назвали его просмотром) и т.д.

Другими параметрами являются макет, содержащий идентификаторы вида, которые вы указываете в массиве, и курсор, содержащий данные, которые будут использоваться в массиве.

0

list_item.xml См. эту ссылку

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:textSize="16sp" >
</TextView>

HelloListView.java

public class HelloListView extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, getNames()));

  ListView lv = getListView();
  lv.setTextFilterEnabled(true);

  lv.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,
        int position, long id) {
      // When clicked, show a toast with the TextView text
      Toast.makeText(getApplicationContext(), ((TextView) view).getText(),
          Toast.LENGTH_SHORT).show();
    }
  });
}
private ArrayList<String> getNames(){
        ArrayList<String> namesArray = new ArrayList<String>();
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        ContentResolver cr = getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
        String[] projection    = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME};
        Cursor names = getContentResolver().query(uri, projection, null, null, null);

        int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
        names.moveToFirst();
        do {
            namesArray.add(names.getString(indexName));
         } while (names.moveToNext());
       return namesArray;
    }
}

Ещё вопросы

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