2009-08-14 2 views
2

ListActivity가있는 앱을 만들고 각 항목에 대한보기에 진행률 표시 줄이 있습니다. 내 데이터를 TextView에 바인딩 할 수 있었지만 ProgressBar의 최대 및 진행률에 바인드하는 방법을 파악할 수 없습니다.데이터를 진행률 막대의 특성에 바인딩하는 방법은 무엇입니까?

이 내 시야의 단순화 된 버전입니다 :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TextView android:id="@+id/text1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:layout_alignParentLeft="true"/> 
<ProgressBar android:id="@+id/progress_bar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/text1" 
    /> 
</RelativeLayout> 

내가보기에 내 데이터를 넣어 메모장 자습서와 동일한 방법을 사용하고 있습니다 :

String[] from = new String[]{MyDbAdapter.KEY_AMOUNT}; 
int[] to = new int[]{R.id.text1}; 
SimpleCursorAdapter list_adapter = 
    new SimpleCursorAdapter(this, R.layout.item_row, myCursor, from, to); 
setListAdapter(list_adapter); 

추가 MyDbAdapter. 배열에 대한 KEY_AMOUNT 및 R.id.progress_bar가 예외를 throw합니다 (java.lang.IllegalStateException : android.widget.ProgressBar가이 SimpleCursorAdapter에 의해 바인딩 될 수있는 뷰가 아닙니다). 어떤 종류의 @ ...이 작업을하기 위해 최대 및 진행을 위해 사용해야합니까?

답변

2

Java 코드에서 bindView() (그리고 아마도 newView())을 바인딩하고 "손으로"바인딩해야 할 것입니다. SimpleCursorAdapterTextView 및 어린이를 자동으로 처리하는 방법을 알고 있지만 다른 모든 도움이 필요합니다.

+0

나는 지금과 똑같은 문제가 있었으며, SimpleCursorAdapter.ViewBinder를 구현하는 커스텀 클래스를 설정하는 것은 bindView를 오버라이드 할 필요가 없다는 것을 알게되었다. 물론, 나는 android.support.v4.widget.SimpleCursorAdapter를 사용하고 있습니다. 그래서 차이가 있는지 확실하지 않습니다. – Bilthon

+0

@Bilthon은 충분히 친절하게 진행할 수 있으며 진행률 막대에서 어떻게 수행했는지 샘플 코드와 함께 답변을 추가 할 수 있습니까? 나는 ViewBinder를 시도했지만'View view' 매개 변수를'ProgressBar' 유형으로 형변환 할 수 없습니다. –

3

SimpleCursorAdapter을 구현하는 새 클래스를 만들어야합니다. ViewBinder을 입력하고 setViewValue(View view, Cursor cursor, int columnIndex) 메소드를 대체하여 리턴 된 커서 데이터로 진행 표시 줄에서 수행 할 것을 구현하십시오.

그런 다음 list_adapter.setViewBinder(ViewBinder)으로 전화하여 새 ViewBinder 개체를 전달하십시오.

관련 문제