不更改ListView中的元素冻结

时间:2013-07-06 19:56:04

标签: android android-layout android-listview

我的ListView有问题。 ListView的第一个元素是一个不会改变的视图。其他元素在getView方法中以dinamicly方式创建。问题是,第一个元素有时会冻结,而其中的progressBar不再转动。只有当我向下滚动然后再向上滚动到第一个元素时才会发生这种情况。任何想法我怎么能解决这个问题?

以下代码缩短,仅包含相关部分:

ListViews适配器:

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
    }
}

}

Layout 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" />

1 个答案:

答案 0 :(得分:0)

也许您应该使用ListView Header而不是创建修改适配器来处理更改此组件(因为您想要更改列表中的第一个元素?)。

我怀疑你的适配器中有逻辑导致一些导致问题的长时间运行操作。

底线,将您的顶部单元格元素创建为标题,而不是使用您的apapter执行此操作。

Linky:http://www.samcoles.co.uk/mobile/android-listactivity-with-a-header-or-footer/