簡體   English   中英

RecyclerView onCreateViewHolder 方法未調用

[英]RecyclerView onCreateViewHolder method not calling

以下是我的ShelflifeAdapterHomeFragment類:-

public class HomeFragment extends Fragment {

RecyclerView shelflifeRecyclerview;
ShelflifeAdapter shelflifeAdapter;
Product product;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {



    ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_home, container, false);
    shelflifeRecyclerview = rootView.findViewById(R.id.shelflifeRecyclerview);

    shelflifeAdapter = new ShelflifeAdapter(getContext());

    shelflifeRecyclerview.setAdapter(shelflifeAdapter);
    shelflifeRecyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
    shelflifeRecyclerview.setHasFixedSize(true);
    //fragment->fragment 데이터받기
    Bundle bundle = getArguments(); //번들 받기
    if(bundle != null){
        product = new Product();
        product = (Product) bundle.getSerializable("bundle");
        shelflifeAdapter.addItem(product);
        Log.d("TAG", shelflifeAdapter.getItemCount() +" 갯수");
    }




    return rootView;
}

}


public class ShelflifeAdapter extends RecyclerView.Adapter<ShelflifeAdapter.ViewHolder>{
    ArrayList<Product> items = new ArrayList<Product>();
    Context mContext;

    ShelflifeAdapter(Context context){
        mContext = context;
    }


    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        Log.d("TAG","onCreateViewHolder 작동함");
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());
        View itemView = inflater.inflate(R.layout.layout_shelflife,parent,false);
        return new ViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
        Log.d("TAG","onBindViewHolder 작동함");
        Product item = items.get(position);
        viewHolder.setItem(item,mContext);

    }

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


    public void addItem(Product item){

        if(item != null){
            Log.d("TAG","addItem 작동함(item 추가) : " + item.toString());
            items.add(item);
            notifyDataSetChanged();
        }else{
            Log.d("TAG","addItem 작동함(item 못가져옴)");
        }

    }

    public void setItems(ArrayList<Product> items){
        this.items = items;
    }

    public Product getItem(int position){
        return items.get(position);
    }


    static class ViewHolder extends RecyclerView.ViewHolder {
        ImageView imageView;
        TextView tv_shelflife;
        LinearLayout itemContainer;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);

            imageView = itemView.findViewById(R.id.imageView);
            tv_shelflife = itemView.findViewById(R.id.tv_shelflife);
            itemContainer = itemView.findViewById(R.id.itemContainer);
        }

        public void setItem(Product item, Context context){
            if(item != null){

                Log.d("TAG","어댑터의 item : "+ item.toString());

                if(item.getImage()==null){
                    Glide.with(itemView).load(R.drawable.no_image).override(48,48).into(imageView);
                }else{
                    Glide.with(itemView).load(item.image).override(48,48).into(imageView);
                }

                tv_shelflife.setText(item.shelflifeDate);

            }else{
                Log.d("TAG","item이 null임" );
            }


        }
    }
}

addItem(Product item)運行良好但onCreateViewHolder方法不起作用。 任何幫助表示贊賞!

首先初始化回收器視圖,然后為回收器視圖設置適配器。

     shelflifeAdapter = new ShelflifeAdapter(getContext());
      
        shelflifeRecyclerview.setLayoutManager(new LinearLayoutManager(getContext()));
        shelflifeRecyclerview.setHasFixedSize(true);
//Always set adapter after  setLayoutManager, setHasFixedSize 
 shelflifeRecyclerview.setAdapter(shelflifeAdapter);

 Bundle bundle = getArguments(); //번들 받기
    if(bundle != null){
        product = new Product();
        product = (Product) bundle.getSerializable("bundle");
        
        shelflifeAdapter.addItem(product);
       
        Log.d("TAG", shelflifeAdapter.getItemCount() +" 갯수");
    }

並確保項目不是 null

 Product item = items.get(position);
  if(item!=null)
    viewHolder.setItem(item,mContext);

將上下文傳遞給滑行

if(item.getImage()==null){
                Glide.with(context).load(R.drawable.no_image).override(48,48).into(imageView);
            }else{
                Glide.with(context).load(item.image).override(48,48).into(imageView);
            }

            tv_shelflife.setText(item.shelflifeDate);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM