水平列表视图添加页脚视图

时间:2013-03-25 11:53:54

标签: android android-listview

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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;
}

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