настройка пользовательского поля между представлением recyclerview

#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 вам не нужно указывать какие-либо дополнительные поля в вашем коде. Просто добавьте украшение элемента. Если вы все еще сталкиваетесь с проблемой, я рекомендую поделиться своим фрагментом кода, чтобы я мог помочь в дальнейшем.