【发布时间】:2019-06-25 21:54:32
【问题描述】:
目前我的分隔线只画一个宽度:
如何在我的 recyclerview 中为每个增量位置添加一个额外的分隔符?
这是我的 ItemDecoration 类:
public SimpleDivider(Context mContext, ArrayList<Integer> mDepth) {
mDivider = ContextCompat.getDrawable(mContext, R.drawable.recycler_view_divider);
this.mContext = mContext;
this.mDepth = mDepth;
dividerMargin = 15;
}
@Override
public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
int top = 0;
int bottom = parent.getHeight();
int childCount = parent.getChildCount();
for(int i = 0; i < childCount; ++i) {
int right = dividerMargin;
int left = 0;
mDivider.setBounds(left, top, right, bottom);
mDivider.draw(c);
}
}
Edit1:这是适配器。我认为不需要它,因为所有逻辑都将写在 ItemDecoration 类中。
private ArrayList<String> mList;
public class ViewHolder extends RecyclerView.ViewHolder{
TextView singleMessageComment;
public ViewHolder(@NonNull View itemView) {
super(itemView);
singleMessageComment = itemView.findViewById(R.id.item_child_comment);
}
}
public AdapterTest(ArrayList<String> mList) {
this.mList = mList;
}
@NonNull
@Override
public AdapterTest.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.recycler_view_single_layout, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull AdapterTest.ViewHolder viewHolder, int i) {
viewHolder.singleMessageComment.setText(mList.get(i));
}
@Override
public int getItemCount() {
return mList.size();
}
【问题讨论】:
-
你能附上recyleView适配器吗?
-
什么意思?
-
我的意思是附上你的recyclerview代码。也是你的适配器类。
-
@kAvEh 好的,添加了适配器。我以为所有的分隔符逻辑都会在 ItemDecoration 类中处理?
-
你不能只添加分隔视图而不是添加项目装饰器吗? lh3.googleusercontent.com/…
标签: android android-recyclerview