Проблемы с Android Viewgroup - PullRequest
2 голосов
/ 27 марта 2019

У меня проблема с использованием viewGroup, по какой-то причине id не обрабатывает утверждение, и я действительно все перепробовал, не могли бы вы помочь?

Я не знаю, что-то с version3.3.2 или что-то не так с кодом

public class popularAdapter extends  RecyclerView.Adapter<popularAdapter.ImageViewHolder> {

    private Context mContext;
    private List<popular> mPopulars;

    public popularAdapter (Context context,List<popular>populars){

        mContext=context;
        mPopulars=populars;



    }




    @Override
    public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                                                      //HERE IS THE ISSUE
        View v= LayoutInflater.from(mContext).inflate(R.layout.popular_item2,viewGroup,false);

        return new ImageViewHolder(v);
    }

    @Override
    public void onBindViewHolder(ImageViewHolder holder, int position) {

    popular popularCur=mPopulars.get(position);
    ImageViewHolder.prodName.setText(popularCur.getProduc_name());


    }

    @Override
    public int getItemCount() {
        return 0;
    }

    public class ImageViewHolder extends RecyclerView.ViewHolder {

        public TextView prd_name;
        public TextView prd_price;
        public TextView prd_img;

        public ImageViewHolder(View itemView) {
            super(itemView);

            prd_name =itemView.findViewById(R.id.prodName);
            prd_price=itemView.findViewById(R.id.prodPrice);
            prd_img  =itemView.findViewById(R.id.prodImageHolder);




        }
    }

}

Ответы [ 3 ]

1 голос
/ 27 марта 2019

проблема здесь

вы никогда не получите никаких предметов в RecyclerView, потому что вы возвращаете 0 в getItemCount

    @Override
    public int getItemCount() 
    {
       //return 0 ?
        return 0;
    }

изменить с

    @Override
    public int getItemCount() 
    {
        return mPopulars.size();
    }

getItemCount

int getItemCount ()

Возвращает общее количество элементов в наборе данных, хранящихся в адаптере.

0 голосов
/ 27 марта 2019

Оптимизация ответа @Ashwin solanki

Изменить следующий код

@Override
public int getItemCount() 
{
   //return 0 ?
    return 0;
}

на

@Override
public int getItemCount() 
{
   //return 0 ?
    if(mPopulars != null) {
        return mPopulars.size();
    }
    return 0;
}

Описание: методы onCreateViewHolder и onBindViewHolder вызываются для возвращаемого счетчикаметодом getItemCount.Поскольку ваш код всегда возвращает 0, эти методы не будут вызываться и список не будет заполняться в пользовательском интерфейсе.

Кроме того, проверьте следующую строку из вашего кода из метода onBindViewHolder:

ImageViewHolder.prodName.setText(popularCur.getProduc_name());

Вы рассматриваете переменную 'prodName' класса 'ImageViewHolder' как статическую, но это не так.Вместо этого должно быть

holder.prodName.setText(popularCur.getProduc_name());
0 голосов
/ 27 марта 2019

Попробуйте это решение

public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View v= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.popular_item2,viewGroup,false);
    return new ImageViewHolder(v);
}
...