1

我在这里使用这个水平列表视图 ,我需要在列表末尾添加一个布局......它不支持 addFooter()所以我被卡住了

我想在最后添加一个“加载更多”按钮

4

2 回答 2

0

一种替代且有点脏的解决方案是将具有特定标志的虚拟项目添加到适配器的支持列表中。在getView标志的帮助下检查这个虚拟项目并膨胀页脚视图。

更新列表时要小心。您应该删除最后一个虚拟项目并添加附加列表,然后在需要时添加虚拟项目

假设这是您的列表项。

class Item {
    String title;
    String imageUrl;
    boolean flagFooter;//this is the flag which will be set when the view is a dummy view
}

getView 方法可能如下所示:

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    Item i = getItem(position);
    //check whether a view needs to be inflated or not
    if (convertView == null){
        holder = new ViewHolder();
        //check whether the view is the footer view or not
        if(i.flagFooter){
            holder.flagFooter = true;
            convertView = inflater.inflate(R.layout.list_footer, null);
        }else{
            convertView = inflater.inflate(R.layout.list_row, null);
        }
        //assign holder views all findViewById goes here

        convertView.setTag(holder);
    }else{
        holder = (ViewHolder) convertView.getTag();
        //check whether the view is the footer view or not
        if(i.flagFooter){
            holder.flagFooter = true;
            convertView = inflater.inflate(R.layout.list_footer, null);
            convertView.setTag(holder);
        }else{
            //check if the view which is being reused is a footer view 
            //if it is footer view a list row view should be used.
            if(holder.flagFooter){
                holder.flagFooter = false;
                convertView = inflater.inflate(R.layout.list_row, null);
                convertView.setTag(holder);
            }
        }
    }

    //update view here
    return convertView;

}

视图持有者

class ViewHolder{
    TextView title;
    ImageView img;
    boolean footer;
}

正如我之前提到的,这是一种肮脏的工作方式,但效果很好,过去曾使用过这种方法。

于 2013-03-25T12:53:37.010 回答
0

您必须使用自定义水平列表视图。

于 2013-03-25T11:57:08.677 回答