簡體   English   中英

設置第一個ListView項的布局

[英]Setting layout of first ListView Item

因此,我嘗試使用以下代碼為我的第一個ListItem元素設置不同的布局資源:

int type;
@Override
public int getItemViewType(int position) {

    if(position==0) {
        type = R.layout.queue_item_next;
    } else {
        type = R.layout.queue_item;
    }

    return type;
}


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

    if(convertView == null) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = (View) inflater.inflate(getItemViewType(position), parent, false);
    }

但是,此代碼具有某些意外行為。 由於某種原因,ListView的最后一個元素也被設置為具有這種替代布局,我不知道為什么。

什么會導致這種情況發生?

謝謝。

由於即將出現問題,因為getItemViewType()返回的值大於視圖類型的數量。 您可以使用下面的代碼對我來說工作得很好。

@Override
    public int getItemViewType(int position) {

        if(position==0) {
            return 0;
        } 
        return 1;
    }

   @Override
    public int getViewTypeCount() {
        return 2;
    }

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

        if(convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            int type = getItemViewType(position);
        if(type == 0)
            convertView = (View) inflater.inflate(R.layout.first_layout, parent, false);
        else 
        convertView = (View) inflater.inflate(R.layout.second_layout, parent, false);
        }
}

注意:如果只有第一個視圖不同,那么最好的選擇是通過此鏈接使用listView.addHeaderView()函數的headerView

因為您使用的是if(convertView == null) {} ,這意味着如果以前的視圖在內存中可用,則使用另一個視圖來創建一個新視圖。 因此,有時快速/慢速滾動取決於電話的可用資源而有所不同。

解決此問題,請不要檢查if(convertView == null)

這樣使用

@Override
public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = (View) inflater.inflate(getItemViewType(position), parent, false);
    }

暫無
暫無

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

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