listview 加入footerView 之后为什么看不见那个 footerView

listview 加入footerView 之后为什么看不见那个 footerView,第1张

使用过RecyclerView的同学就知道它并没有添加header和footer的方法,而ListView和GirdView都有,但是开发过程中难免有需求需要添加一个自定义的header或者footer,或者不同布局的Item。

好了,我们知道如果在ListView中要添加不同的布局的item,都是通过重写getItemViewType()和getViewTypeCount()这两个方法来控制的,OK,对于RecyclerView,还是用这个方法来做,分别对不同的Item用不同的flag标记,然后在创建和绑定数据时候分别对不同的flag对应不同的处理,直接上代码(这里我添加了header和footer):

RecyclerView.Adapter

publicclassRecyclerViewAdapterextendsRecyclerView.Adapter<RecyclerViewAdapter.RecyclerViewHolder>{private List<String>datas

privatestaticfinalint IS_HEADER = 2

privatestaticfinalint IS_FOOTER = 3

privatestaticfinalint IS_NORMAL = 1

publicRecyclerViewAdapter(List<String>datas) {

this.datas = datas

}

@Overridepublic RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {

RecyclerViewHolder holder

//对不同的flag创建不同的Holderif (viewType == IS_HEADER) {

View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_header, viewGroup, false)

holder = new RecyclerViewHolder(view,IS_HEADER)

return holder

} elseif (viewType == IS_FOOTER) {

View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_footer, viewGroup, false)

holder = new RecyclerViewHolder(view,IS_FOOTER)

return holder

}elseif(viewType==IS_NORMAL){

View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.layout_item, viewGroup, false)

holder = new RecyclerViewHolder(view,IS_NORMAL)

return holder

}

returnnull

}

@OverridepublicvoidonBindViewHolder(final RecyclerViewHolder recyclerViewHolder, int position) {

//对不同的Item相应不同的 *** 作if(position!=0&&position!=datas.size()+1&&recyclerViewHolder.viewType==IS_NORMAL){

recyclerViewHolder.mTextView.setText(datas.get(position - 1))

}

if(position==0&&recyclerViewHolder.viewType==IS_HEADER){

//header

recyclerViewHolder.mButton.setOnClickListener(new View.OnClickListener() {

int i=0

@OverridepublicvoidonClick(View v) {

recyclerViewHolder.mButton.setText(++i+"")

}

})

}

if(position==datas.size()+1&&recyclerViewHolder.viewType==IS_FOOTER){

//footer

}

}

@OverridepublicintgetItemCount() {

return datas.size() + 2

}

@OverridepublicintgetItemViewType(int position) {

if (position == 0) {

return IS_HEADER

} elseif(position==datas.size()+1){

return IS_FOOTER

}else {

return IS_NORMAL

}

}

class RecyclerViewHolder extends RecyclerView.ViewHolder {

public TextView mTextView

public Button mButton

publicint viewType

publicRecyclerViewHolder(View itemView,int viewType) {

super(itemView)

this.viewType = viewType

if(viewType==IS_HEADER){

mButton = (Button) itemView.findViewById(R.id.button)

}

if(viewType==IS_FOOTER){

//do some sthing

}

if(viewType==IS_NORMAL){

mTextView = (TextView) itemView.findViewById(R.id.tv_content)

}

}

}

}

RecyclerView.ViewHolder

classRecyclerViewHolderextendsRecyclerView.ViewHolder {public TextView mTextView

public Button mButton

publicint viewType

public RecyclerViewHolder(View itemView,int viewType) {

super(itemView)

this.viewType = viewType

if(viewType==IS_HEADER){

mButton = (Button) itemView.findViewById(R.id.button)

}

if(viewType==IS_FOOTER){

//do some sthing

}

if(viewType==IS_NORMAL){

mTextView = (TextView) itemView.findViewById(R.id.tv_content)

}

}

}

beforeDescendants:viewgroup会优先其子类控件而获取到焦点

afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点

blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到

android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

fadingEdgeLength表示阴影部分的高度,requiresFadingEdge表示阴影的方向

android:fastScrollEnabled="true"

是让ListView出现快速滚动的按钮,比较少的item时候不会出现,多了就会出现。不出现原因是数据不多的原因,只要数据足够多,才会自动出现的。

android:footerDividersEnabled="true" 和android:headerDividersEnabled="true”对应。

api说明是:设成flase时,此ListView将不会在页脚或者头部视图 前画分隔符。此属性缺省值为true。

这说明这个属性只对页脚或者头部起作用,如果listview中没有添加页脚这个属性就不起作用。

指示该列表总是在固定的单色、不透明的背景下绘制。这允许列表优化其绘制过程

为真时,列表会使用更精确的基于条目在屏幕上的可见像素高度的计算方法。 默认该属性为真,如果你的适配器需要绘制可变高的条目,他应该设为假。 当该属性为真时,你在适配器在显示变高条目时,滚动条的把手会在滚动的 过程中改变大小。当设为假时,列表只使用适配器中的条目数和屏幕上的 可见条目来决定滚动条的属性


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11210987.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存