Fragment viewpager Адаптер не подключен; пропуск макета

#java #android-studio #android-recyclerview

#java #android-studio #android-recyclerview

Вопрос:

Я перепробовал много решений, но ни одно решение не сработало для меня. Я получаю данные с сервера и показываю их внутри recycleview. Данные отображаются нормально, но в logcat отображается эта ошибка

 Access denied finding property "persist.vendor.log.tel_dbg"
E/RecyclerView: No adapter attached; skipping layout
E/RecyclerView: No adapter attached; skipping layout
 

иногда, когда я обновляю снова и снова, recyclerview становится пустым.
Я использую viewpager, состоящий из 2 фрагментов внутри родительского фрагмента.
этот recycleview используется во вложенном scrollview
некоторое время данные не отображаются
Фрагмент кода:

 homebuyer_adapter_recycler=new homebuyer_adapter_recycle(getActivity(), items);
LinearLayoutManager home = new LinearLayoutManager(getActivity());                         
home.setOrientation(LinearLayoutManager.VERTICAL);                      
allitemsgrid.setLayoutManager(home);
allitemsgrid.setAdapter(r);
 

Здесь подробнее о

           @Override
         public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, 
          final int viewType) {
    View v = LayoutInflater.from(context).inflate(R.layout.items_view,parent, 
             false);
    RecyclerView.LayoutParams lp = new 
         RecyclerView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT);
                 v.setLayoutParams(lp);
              ViewHolder viewHolder = new ViewHolder(v);
 

ВОТ МОЙ вид элемента

  <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 xmlns:app="http://schemas.android.com/apk/res-auto"


android:orientation="vertical">
<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="3dp"
    app:cardCornerRadius="6dp"
    android:layout_marginBottom="3dp"
    app:cardBackgroundColor="@color/white">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical">
    <RelativeLayout

        android:layout_width="match_parent"
        android:layout_height="150dp">
        <com.makeramen.roundedimageview.RoundedImageView
            android:layout_width="match_parent"
            android:layout_height="150dp"
            app:riv_corner_radius="6dp"
            android:id="@ id/image_items"
            android:scaleType="fitXY"
            />
        <com.makeramen.roundedimageview.RoundedImageView
            android:layout_width="match_parent"
            android:layout_height="150dp"
            app:riv_corner_radius="6dp"
            android:background="@drawable/blackshade"
            android:scaleType="fitXY"/>
        <TextView
            android:id="@ id/items_all"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:padding="@dimen/_5sdp"
            android:textColor="@color/white"


            android:fontFamily="sans-serif-smallcaps"
            android:paddingLeft="20dp"

            android:text="Message" />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="20dp"

            android:text="Timing"
            android:padding="@dimen/_5sdp"

            android:textColor="@color/white"

            android:layout_alignParentBottom="true"
            android:fontFamily="@font/mylight"
            android:layout_alignParentRight="true"

            android:textSize="10dp"
            android:id="@ id/shoptimming"/>



    </RelativeLayout>


    <TextView
        android:id="@ id/name_item"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"

        android:alpha="0.6"
        android:fontFamily="@font/arimo_bold"
        android:paddingLeft="20dp"
        android:text="Name"
        android:textColor="@color/black"
        android:textSize="17dp"




        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="2dp"
        android:orientation="horizontal">

        <TextView
            android:id="@ id/minumum_order"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"

            android:layout_marginBottom="5dp"
            android:layout_weight="1"

            android:drawablePadding="10dp"

            android:fontFamily="sans-serif"
            android:paddingLeft="20dp"
            android:text="Minimum " />

        <TextView
            android:id="@ id/price_item"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"


            android:fontFamily="sans-serif"
            android:gravity="left"
            android:paddingLeft="20dp"
            android:text="charges"


            />






    </LinearLayout>





     </LinearLayout>
   </androidx.cardview.widget.CardView>


      </LinearLayout>
 

Вот мой класс адаптера

 public class homebuyer_adapter_recycle extends RecyclerView.Adapter<homebuyer_adapter_recycle.ViewHolder> {
private ArrayList<seller_information> listData;

private LayoutInflater layoutInflater;
int lastpostition=-1;
Context context;

public homebuyer_adapter_recycle(Context aContext, ArrayList<seller_information> listData) {
    this.listData = listData;
    layoutInflater = LayoutInflater.from(aContext);
    context=aContext;
}

@NonNull
@Override
        public ViewHolder onCreateViewHolder
        (@NonNull ViewGroup parent, final 
       int viewType) {
    View v = LayoutInflater.from(parent.getContext()).
    inflate(R.layout.items_view,parent, false);
           
    ViewHolder viewHolder = new ViewHolder(v);
    Log.i("inadapter","calling time");
    v.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            phone_number_shop = listData.get(viewType).getPhonenumber();
            homebuyer.Delivery_charges_shop = 
       listData.get(viewType).getDiliveryfee();
            homebuyer.Shop_name = listData.get(viewType).getShopname();
            homebuyer.minimum_order = listData.get(viewType).getMinorder();
            //profession=items.get(i).getName();


            // Toast.makeText(getActivity(),phn,Toast.LENGTH_SHORT).show();
            all_and_cetegory_items items = new all_and_cetegory_items();
            Bundle b = new Bundle();
            b.putString("phone",homebuyer.phone_number_shop);

            items.setArguments(b);


            FragmentTransaction fragmentTransaction = 
  
    ((AppCompatActivity)context).getSupportFragmentManager()
      .beginTransaction();
            fragmentTransaction.replace(R.id.nav_host_fragment, items);
            fragmentTransaction.addToBackStack(null).commit();

        }
    });
    return viewHolder;
}

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

    holder.name.setText(listData.get(position).getShopname());
    // 
      Picasso.with(context).load(listData.get(position)
    .getShopimage()).into(holder.shopimage);

 Glide.with(context).load(listData.get(position).getShopimage())
  .into(holder.shopimage);
    holder.dilivery.setText("Rs " listData.get(position).getDiliveryfee() " 
  Delivery fee");
    holder.minorder.setText("Rs " listData.get(position).getMinorder() " minimum");
    holder.items.setText(listData.get(position).getShopmessage());
    holder.time.setText("Service Available  
   " listData.get(position).getStartingtime() "  to  
 " listData.get(position).getEndingtime());


    Log.i("inadapter","calling time" listData.get(position).getShopname());

}


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

public  class ViewHolder extends RecyclerView.ViewHolder {
    TextView name;
    TextView dilivery;
    TextView items;
    TextView minorder;
    TextView time;
    ImageView shopimage;

    public ViewHolder(@NonNull View v) {
        super(v);
        name = (TextView) v.findViewById(R.id.name_item);
      dilivery = (TextView) v.findViewById(R.id.price_item);

       minorder = (TextView) v.findViewById(R.id.minumum_order);
        items=(TextView)v.findViewById(R.id.items_all);
        time=(TextView)v.findViewById(R.id.shoptimming);
       shopimage=(ImageView) v.findViewById(R.id.image_items);

    }
}
 

}

Комментарии:

1. Вы должны поделиться немного большей информацией, чтобы действительно получить помощь от сообщества.

2. Общая информация меньше подходит для решения вашей проблемы. Пожалуйста, поделитесь дополнительной информацией.

Ответ №1:

По ошибке это говорит о том, что адаптер для RecylerView не подключен. Итак, попробуйте добавить адаптер в макет с помощью:

recyclerView.setAdapter(categoryAdapter);

Ответ №2:

Я предполагаю homebuyer_adapter_recycler , что это ваш адаптер. В соответствии с этим вы на самом деле не установили свой адаптер так, как указывает logcat.

Добавьте приведенный ниже код вместо allitemsgrid.setAdapter(r);

 allitemsgrid.setAdapter(homebuyer_adapter_recycler);
 

Если мое предположение или предложение неверно, все в порядке. Вероятно, это связано с тем, что ваш вопрос не очень понятен и не содержит необходимых подробностей. Пожалуйста, предоставьте более подробную информацию, такую как код класса адаптера и что такое allitemsgrid , homebuyer_adapter_recycler и r .

Комментарии:

1. это утверждение allitemsgrid.setAdapter(r); неверно. allitemsgrid.setAdapter(homebuyer_adapter_recycler); Вместо этого напишите.

2. и где именно вы определяете свой RecyclerView. Какой это класс? Это класс адаптера, фрагмент или действие?