0

我的 ListView 有问题。ListView 的第一个元素是一个不会改变的 View。其他元素在 getView 方法中动态创建。问题是,第一个元素有时会冻结,并且其中的进度条不再转动。仅当我向下滚动然后再次向上滚动到第一个元素时才会发生这种情况。知道如何解决这个问题吗?

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

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

}

布局 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" />

4

1 回答 1

0

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

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

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

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

于 2013-07-06T23:02:58.713 回答