#android #android-layout #android-recyclerview
#Android #android-макет #android-recyclerview
Вопрос:
Я пытаюсь создать recyclerview
, в котором я могу указать пользовательское поле для элемента просмотра на основе идентификатора в Android
Я попробовал custome adapter с другим представлением, которое мы можем поместить в одно представление recycler, но мне нужно только одно представление, и единственное, что я хочу сделать, это поместить пользовательское поле между представлением на основе идентификатора.
if (category_detail.getId()==0){
ViewGroup.MarginLayoutParams marginLayoutParams =
(ViewGroup.MarginLayoutParams) rec_discount.getLayoutParams();
marginLayoutParams.setMargins(0, 500, 0, 0);
rec_discount.setLayoutParams(marginLayoutParams);
}
Комментарии:
1. Итак, вам нужны разные размеры полей в зависимости от идентификатора?
2. да, я хочу сделать дизайн, как на изображении выше, используя recyclerview.
Ответ №1:
Для достижения этой цели вы можете использовать ItemDecoration.
public class SpacesItemDecoration extends RecyclerView.ItemDecoration {
private int space;
public SpacesItemDecoration(int space) {
this.space = space;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
outRect.left = space;
outRect.right = space;
outRect.bottom = space;
// Add top margin only for the first item to avoid double space between items
if(parent.getChildAdapterPosition(view) == 0) {
outRect.top = space;
}
}
}
Это добавит поле в пикселях «пробелов» с левой, правой и нижней сторон всех представлений в представлении recycler. Вы можете настроить в соответствии с вашими требованиями.
Чтобы использовать этот класс, вы можете сделать это:
recyclerView.addItemDecoration(new SpacesItemDecoration(10));
Комментарии:
1. но это работает для одного представления, только если я добавляю поле для более чем одного представления, тогда поля получает только последний. @Vikas Malhotra
2. @yuvrajsinh вам не нужно указывать какие-либо дополнительные поля в вашем коде. Просто добавьте украшение элемента. Если вы все еще сталкиваетесь с проблемой, я рекомендую поделиться своим фрагментом кода, чтобы я мог помочь в дальнейшем.