簡體   English   中英

在android api level 8上滾動時只調用getView

[英]getView only called when scrolling on android api level 8

我有我的活動。 它在android 4.2上完美運行,但是當我在2.3(模擬器和真實設備)上運行它時,我看到一個白色的屏幕(只在底部我看到“下一個”項目的一些像素)並且它都出現在我開始滾動。

在此輸入圖像描述在此輸入圖像描述

名單:

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/category_browser"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipChildren="false"
        android:dividerHeight="1dp"
        tools:listitem="@layout/category_browser_list_item" >
</ListView>

這幾項:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/category_browser_list_item"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="fill"
    android:background="#ffffff"
    android:clickable="true"
    android:gravity="fill"
    android:orientation="horizontal" >
        <ImageView
            android:id="@+id/category_browser_list_icon"
            android:layout_width="90dp"
            android:layout_height="90dp"
            android:layout_gravity="fill"
            android:layout_weight="0"
            android:background="#ffffff"
            android:contentDescription="@+id/category_browser_list_item_description"
            android:src="@drawable/icon" />
        <TextView
            android:id="@+id/category_browser_list_title"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:gravity="center_vertical|start"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:text="@string/category_browser_title"
            android:textColor="#000000"
            android:textSize="24sp" />
        <CheckBox
            android:id="@+id/category_browser_list_checkbox"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center_vertical"
            android:layout_weight="0"
            android:clickable="false" />
</LinearLayout>

代碼:

protected LinearLayout getListElementView() {
    View listItem = inflator.inflate(R.layout.category_browser_list_item, null);
    LinearLayout listElement = (LinearLayout)listItem.findViewById(R.id.category_browser_list_item);
    return listElement;
}

    public class CategoryListAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            int count = null != categories && null != categories.categories ? categories.categories.size() : 0;
            Log.d(TAG, "getCount:" + count);
            return count;
        }

        @Override
        public Category getItem(int position) {
            return null != categories && null != categories.categories ? categories.categories.get(position) : null;
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        // create a new ImageView for each item referenced by the Adapter
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            LinearLayout listView = null;
            if (convertView != null) { // if it's not recycled, initialize some attributes
                listView = (LinearLayout)convertView;
            }
            if (listView == null) { // if it's not recycled, initialize some attributes
                listView = getListElementView();
            }

            final Category category = getItem(position);
            category.setListView(listView);
            File cacheIconFile = category.getCacheIconFile();
            ImageView imageView = (ImageView)listView.findViewById(R.id.category_browser_list_icon);
            if (cacheIconFile.exists()) {
                imageView.setImageURI(Uri.fromFile(cacheIconFile));
            } else {
                Drawable noIcon = getResources().getDrawable(R.drawable.icon);
                imageView.setImageDrawable(noIcon);
            }
//          Log.i(TAG, category.name + ": " + category.iconUrl + ": " + category.downloadBaseUrl);
            if (null != category.name) {
                TextView textView = (TextView)listView.findViewById(R.id.category_browser_list_title);
                textView.setText(category.name);
            }

            listView.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    //start downloading category with downloadmanager
                    //(category);
                    Intent intent = category.getIntent();
                    if (null != intent)
                        startActivity(intent);
                    else {
                        category.setStatus(Category.CategoryDownloadStatus.DOWNLOADING);
                        downloadLocalePackage(category);
                    }
                }
            });
            return listView;
        }
    }

ListView XML聲明中刪除android:clipChildren="false" 雖然你看到的效果可能是2.2 / 2.3中的一個錯誤,在以后的版本中解決了,但這個屬性在ListView確實沒什么用處。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM