未连接适配器;跳过布局无解决方案

时间:2018-10-07 13:36:04

标签: android android-recyclerview

在此帖子变为负面之前,我必须告诉我以前的解决方案均不适用

所以, 我有一个具有recyclerview的Fragment,所以我正在将recyclerview初始化为代码的onCreateView,并且我将Firebase数据库作为recyclerView数据的源。
这是我的代码:

   @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View v=inflater.inflate(R.layout.fragment_search, container, false);
        Product=(Spinner)v.findViewById(R.id.P_Name);
        Tehsil=(EditText)v.findViewById(R.id.TehsilSearch);
        State=(Spinner)v.findViewById(R.id.StateSearch);
        City=(Spinner)v.findViewById(R.id.DistrictSearch);
        State.setOnItemSelectedListener(ss);
        Product.setOnItemSelectedListener(p);
        City.setOnItemSelectedListener(cc);
        rView=(RecyclerView)v.findViewById(R.id.R_view);
        b=(Button)v.findViewById(R.id.button4);
        b.setOnClickListener(bclick);
        LinearLayoutManager llm=new LinearLayoutManager(getActivity());
        llm.setOrientation(LinearLayoutManager.VERTICAL);
        rView.setLayoutManager(llm);
        rView.setHasFixedSize(true);
        rView.setAdapter(FBRA);
        return v;
    }

    private View.OnClickListener bclick=new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            DatabaseReference mRef;
            mRef= FirebaseDatabase.getInstance().getReference().child("Uploads").child(ProductEntered).child(StateEntered).child(CityEntered).child(Tehsil.getText().toString());
            Toast.makeText(getContext(),StateEntered+"\n"+CityEntered+"\n"+Tehsil.getText().toString(),Toast.LENGTH_LONG).show();
            FirebaseRecyclerOptions<RecyclerCropView> options=new FirebaseRecyclerOptions.Builder<RecyclerCropView>().setQuery(mRef,RecyclerCropView.class).build();

            FBRA=new FirebaseRecyclerAdapter<RecyclerCropView, ViewHolder>(options) {
                @Override
                protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull RecyclerCropView model) {

                    holder.setProductImage(model.getProfileImage());
                    holder.setProductImage(model.getProduct_Image());
                    holder.setQuantity(model.getQuantity());
                    holder.setQuantityUnit(model.getQuantityUnit());
                    holder.setName(model.getName());
                    holder.setMax(model.getMaximumPrice());

                    final String x=FBRA.getRef(position).getKey().toString();
                    holder.setDate(x);
                    holder.itemView.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            Intent intent=new Intent(getActivity(),Itemclicked.class);
                            intent.putExtra("ProductName",ProductEntered);
                            intent.putExtra("State",StateEntered);
                            intent.putExtra("City",CityEntered);
                            intent.putExtra("tehsil",Tehsil.getText().toString());
                            intent.putExtra("key",x);
                            startActivity(intent);
                        }
                    });
                }

                @NonNull
                @Override
                public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                    View v=LayoutInflater.from(parent.getContext()).inflate(R.layout.recyclercard,parent,false);
                    return new ViewHolder(v);
                }
            };
            FBRA.notifyDataSetChanged();


          }

    };

请也通过此操作。

1 个答案:

答案 0 :(得分:0)

通过将每个回收站视图属性放入onClick解决了此问题。 意味着setlayoutManager和.setAdapter一起成为按钮的onClick方法