Cursor의 데이터들을 ListView와 Adapter를 통해서 일렬로 보여주는 것이 아닌, 리니어 또는 상대성레이아웃으로 하나의 레이아웃안에 텍스트뷰와 이미지뷰를 넣어 일정시간마다업데이트 해주는 방식으로 코딩 예제를 구현하고 있습니다.
제가 현재 구성한 방식은
public class getList(){
Uri people = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String projection[] = new String[]{
ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
.
.
.
// 주소록을 얻어오는 소스와 동일
// TextView 및 ImageView를 통해 한 레이아웃안에 한개의 데이터만 표시할 수 있도록 구현됨.
Cursor.moveToNext();
}
커서가 처음 위치로 갈때 moveToFirst()구문은 가독성을 위해 여기엔 생략했습니다.
이것을 스레드에 전달하여 핸들러와 러너블 객체로 UI(TextView, ImageView 등)을 업데이트 하려고하니 첫번째 데이터는 정상적으로 표시되나 다음 데이터들은 표시되지 않았습니다. Cursor가 moveToNext()되면서, 스레드에서 정해진 지연시간마다 업데이트를 해주려니 했는데 그게 아니였네요...
(스레드 문제는 아닌것이 스레드에 프로그래스바를 동시에 구현해주면 정상적으로 동작하는걸 확인할 수 있었습니다)
moveToNext()와 무언가를 같이 사용해야 할것같은데... 도통 감이 오질 않습니다.
ps. acitivty_main.xml // 현재 커서에 담긴 데이터를 보여주는 레이아웃.
<LinearLayout
android:id="@+id/linear01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp" >
<ImageView
android:id="@+id/image01"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginRight="16dp" />
<TextView
android:id="@+id/textName01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/number01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>