반응형
Cursor Adapter
cursor adapter는 커서로 읽은 정보를 list로 만들어 주는 역할을 한다.
따라서 DB에서 읽은 정보를 listview 형태로 보여줄때 사용한다.
Simple Cursor Adapter
cursor adatper중에 가장 간단한 adapter 이다.
Simple cursor adatper는 cursor에 있는 정보를 textView나 imageView로 보여줄때 사용한다.
생성자는 아래와 같이 만들 수 있다.
- from: column의 배열
- to: column과 mapping될 layout의 view id
Example
간단하게 contact의 정보를 받아 list로 보여주는 예제는 아래와 같다
import android.provider.ContactsContract.CommonDataKinds.Phone;
public class HelloSimpleCursorAdapter extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Cursor c = getPhoneInfoFromDB;
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,
android.R.layout.simple_list_item_2, c,
new String[] { Phone.TYPE, Phone.NUMBER },
new int[] { android.R.id.text1, android.R.id.text2 },
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}
//읽은 정보를 뷰에 보여줄때 가공하여 보여준다.
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int colIndex) {
//type coulmn인지 확인
int phoneTypeIndex = cursor.getColumnIndex(Phone.TYPE);
if (colIndex == phoneTypeIndex) {
int type = cursor.getInt(phoneTypeIndex);
String label = null;
//custom type이면 label을 읽음
if (type == Phone.TYPE_CUSTOM) {
label = cursor.getString(cursor.getColumnIndex(Phone.LABEL));
} else {
//일반 type이면 라벨을 text로 구함
label = (String)Phone.getTypeLabel(getResources(),
type, null);
}
((TextView) view).setText(text);
return true;
}
return false;
}
});
setListAdapter(adapter);
}
//phone 정보를 DB에서 읽어온다.
public Cursor getPhoneInfoFromDB() {
String[] projection = new String[] {Phone._ID, Phone.TYPE, Phone.LABEL, Phone.NUMBER};
Cursor c = getContentResolver().query(Phone.CONTENT_URI,
PHONE_PROJECTION, null, null, null);
};
}
setViewBinder()는 보여줄 view의 정보를 가공하는 역할을 한다.
위 예제에서는 phone의 type을 (int) view에서 string으로 교체하여 보여준다.
반응형
'개발이야기 > Android' 카테고리의 다른 글
Cursor Adapter#3 - Resource Cursor Adatper (0) | 2017.10.20 |
---|---|
Cursor Adapter#2 - Custom Cursor Adapter (0) | 2017.10.19 |
Android Architecture Components #6 - Room (2) | 2017.10.18 |
Android Architecture Components #5 - ViewModel (0) | 2017.10.17 |
Android Architecture Components #4 - LiveData API (0) | 2017.10.16 |