簡體   English   中英

重寫Adapter.getView

[英]overriding Adapter.getView

我是Android編程的新手,並使用Adapters(對於ListView )執行第一步。

覆蓋Adapter.getView我經常看到這樣的事情:

public View getView(int position, View convertView, ViewGroup parent) {

    View itemView = null;

    if (convertView == null) {
        LayoutInflater inflater = (LayoutInflater) parent.getContext()
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        itemView = inflater.inflate(R.layout.table_row, null);
    } else {
        itemView = convertView;
    }

    // play with itemView

    return itemView;
}

我的問題是反對這一點:

public View getView(int position, View convertView, ViewGroup parent) {

    View itemView = super(position, convertView, parent);

    // play with itemView

    return itemView;
}

這似乎對我有用,但我確信我有一個很重要的一點:D

感謝您閱讀並抱歉我的英語不好......

您可以使用

View itemView = super(position, convertView, parent);

如果只是從“即用型”適配器(不是BaseAdapterBaseAdapter ,比如SimpleAdapterArrayAdapter ,因為它們已經有了getView()

看看它們: http//grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r2.1/android/widget/ArrayAdapter.java#361 for適用於SimpleAdapter的ArrayAdapter和http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r2.1/android/widget/SimpleAdapter.java#113

如果你從BaseAdapter派生,你將不得不BaseAdapter實現整個方法,正如你在第一個例子中描述的那樣,因為它沒有開箱即用的內容: http//grepcode.com/file/repository.grepcode .COM / JAVA /轉/ com.google.android /安卓/ 4.0.4_r2.1 /安卓/空間/ BaseAdapter.java#BaseAdapter

適配器的getView(..)方法可以有多種方式。 唯一的問題是,哪一個最有效?

一篇有趣的文章,讓您更加詳細地了解ListView: http//lucasr.org/2012/04/05/performance-tips-for-androids-listview/

如果你的意思是這段代碼:

if (convertView == null) {
    LayoutInflater inflater = (LayoutInflater) parent.getContext()
        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    itemView = inflater.inflate(R.layout.table_row, null);
} else {
    itemView = convertView;
}

你似乎沒必要:這段代碼允許Android創建相對較少數量的單元格(等於屏幕上可見的單元格數量 - ),然后“回收”這些單元格 - 一遍又一遍地使用它們當用戶滾動列表時,而不是為數組中的每個對象創建一個單元格。 這將幫助您:

  1. 保存內存 - 因為您沒有為數組中的每個元素創建視圖

  2. 節省CPU使用率 - 從xml文件創建視圖對象(“膨脹”)是相對昂貴的任務,對陣列中的每個項目執行此操作可能會阻塞UI線程

暫無
暫無

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

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