在此帖子变为负面之前,我必须告诉我以前的解决方案均不适用
所以,
我有一个具有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();
}
};
请也通过此操作。
答案 0 :(得分:0)
通过将每个回收站视图属性放入onClick解决了此问题。 意味着setlayoutManager和.setAdapter一起成为按钮的onClick方法