2013-07-06 2 views
0

ListView에 문제가 있습니다. ListView의 첫 번째 요소는 변경되지 않는 뷰입니다. 다른 요소는 getView 메소드에서 dinamicly 작성됩니다. 문제는 첫 번째 요소가 때때로 고정되고 progressBar가 더 이상 돌아 가지 않는다는 것입니다. 이것은 아래로 스크롤 한 다음 첫 번째 요소로 다시 올라갈 때만 발생합니다. 모든 아이디어 어떻게 그 문제를 해결할 수 있습니까?ListView의 요소가 변경되지 않습니다.

아래의 코드 단축 만 관련 부분을 포함하고 있습니다

:

의 ListView 어댑터 :

public class MyAdapter extends ArrayAdapter<String>{ 
private View main_control; 

public PictureShowAdapter(Context context, ArrayList<String> URLs){ 
    super(context, R.layout.picture_show_items, URLs); 

    LayoutInflater li = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    main_control = li.inflate(R.layout.main, null, false); 
} 

public View getView(final int position, View arg1, ViewGroup parent) { 
    if(position == 0){ 
     return main_control; 
    } else{ 
     //...create and return other items 
    } 
} 

}

레이아웃의 main.xml에 :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" 
android:layout_alignParentTop="true" 
android:orientation="vertical" 
android:focusable="true" 
android:focusableInTouchMode="true" 
android:background="#dddddd" > 
<LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal">  
    <ProgressBar 
     android:id="@+id/progressBar2" 
     style="?android:attr/progressBarStyleInverse" 
     android:layout_width="20dp" 
     android:layout_height="20dp" 
     android:visibility="gone" /> 
    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="20dp" 
     android:text="" 
     android:visibility="gone" /> 
</LinearLayout> 
<EditText 
    android:id="@+id/editText1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:hint="@string/mainActivity_textView_Hint" 
    android:singleLine="true" 
    android:inputType="textUri" 
    android:imeOptions="actionGo" 
    android:text="" > 
</EditText> 
<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:onClick="onClickDownload" 
    android:text="@string/mainActivity_button" /> 

+0

, 문제가 사라합니까? 또한 "return this.main_control;"을 사용하지 않는 이유는 무엇입니까? PictureShowActivity 란 무엇이며 PictureShowActivity.main_control에는 어떤 가치가 있습니까? 나는 그것이 초기화되는 것을 보지 못한다 –

+0

나는 그것을 잘못 단축했다 미안하다. 나는 그것을 바로 잡기 위해 그것을 편집했다. 특수 취급이란 무엇을 의미합니까? – antumin

+0

'else' 블록 재사용 뷰가'arg1'로 전달 되었습니까, 아니면'super.getView'로 넘어 갔습니까? –

답변

0

아마도이 구성 요소의 변경을 처리하기 위해 어댑터를 수정하는 대신 ListView 헤더를 사용해야합니다 (목록의 첫 번째 요소를 변경하려는 요소가 변경되었으므로).

문제가 발생한 장기간의 작동을 유발하는 어댑터에 로직이있는 것 같습니다.

결론 하단에 apapter로 대신 상단 셀 요소를 헤더로 만듭니다.

Linky : 당신이 첫 번째 요소에 대한 특별한 처리를 제거하면 http://www.samcoles.co.uk/mobile/android-listactivity-with-a-header-or-footer/

+0

답변 해 주셔서 감사합니다. 귀하의 솔루션을 시도했지만 문제가 여전히 발생합니다 – antumin

+0

다음 UI를 차단 뭔가가 있어야합니다. 당신은 당신이 보여주지 않는 뭔가 다른 것을 가지고 있습니다. 나는 이것이 목록 상단에 정적 요소를 만드는 방법에 대한 올바른 해결책이라고 100 % 확신합니다. – Booger

+0

ListView 자체가 여전히 제대로 스크롤되어 있기 때문에 UI 스레드를 차단할 수 없습니다. 이 특정보기에 대해 다른 스레드가있을 수 있습니까? – antumin

관련 문제