Recycleview列表展示Item横向布局无法铺满全屏问题

      今晚在做GreenDao数据库操作需要列表展示读取数据是用到Recycleview列表展示数据,但是奇怪的是Item子布局无法横向铺满父布局。

     此BUG出现主要两种错误写法,第一种是Adapter中加载inflater时候parent传入为null。

错误代码:

        return new CreateTODOViewHolder(
        LayoutInflater.from(context).inflate(R.layout.item_date,null,false));
        正确代码:

        return new CreateTODOViewHolder(
        LayoutInflater.from(context).inflate(R.layout.item_date,parent,false));

我犯的是第二种错误,在写Recycleview布局时候未明确宽高,用权重代替。


      

<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:id="@+id/recycleview"
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp">

</com.jcodecraeer.xrecyclerview.XRecyclerView>

解决办法是在RecycleVeiw的最外层添加一个RelativeLayout 布局就可以解决该问题

<RelativeLayout
    android:layout_weight="1"
    android:layout_width="match_parent"
    android:layout_height="0dp">

    <com.jcodecraeer.xrecyclerview.XRecyclerView
        android:id="@+id/recycleview"
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </com.jcodecraeer.xrecyclerview.XRecyclerView>

</RelativeLayout>

问题在于Recycleview 的Item子布局在填充的时候会获取父布局的宽高 ,但是原来错误写法没有给明确的高度而是用权重代替高度导致子布局在获取父布局的宽高出现问题 只要在Recycleview外层添加一个RelativeLayout就可以解决。



大家加油!!!

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个使用RecyclerView实现item点击事件的Java代码示例: ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<String> mDataList; public MyAdapter(List<String> dataList) { mDataList = dataList; } public interface OnItemClickListener { void onItemClick(View view, int position); } private OnItemClickListener mOnItemClickListener; public void setOnItemClickListener(OnItemClickListener listener) { mOnItemClickListener = listener; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); final MyViewHolder viewHolder = new MyViewHolder(itemView); viewHolder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnItemClickListener != null) { mOnItemClickListener.onItemClick(viewHolder.itemView, viewHolder.getAdapterPosition()); } } }); return viewHolder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.mTextView.setText(mDataList.get(position)); } @Override public int getItemCount() { return mDataList.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView mTextView; MyViewHolder(View itemView) { super(itemView); mTextView = itemView.findViewById(R.id.tv_item); } } } ``` 在上述代码中,我们定义了一个`MyAdapter`类,它继承自`RecyclerView.Adapter`。通过实现`onCreateViewHolder`、`onBindViewHolder`和`getItemCount`方法来创建和绑定列表项。我们还定义了一个`OnItemClickListener`接口,当列表项被点击时,我们会回调该接口中的`onItemClick`方法。在`onCreateViewHolder`方法中,我们为每个列表项的`itemView`设置了一个点击事件监听器,当该项被点击时,我们会调用`mOnItemClickListener.onItemClick`方法来回调接口中的方法。 在使用上述代码时,您需要实例化`MyAdapter`类,并将其设置为RecyclerView的适配器。然后,您可以通过调用`setOnItemClickListener`方法来设置列表项的点击事件监听器。在回调方法中,您可以执行您需要的逻辑操作。 注意:上述代码仅为示例代码,您需要根据您自己的需求和实际情况进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值