我想设置一些属性,例如setClickable(false),setText(“ Permanent”)到我在ViewHolder中创建的按钮。但是当我尝试在onBindViewHolder中的onClickListener中将这些属性实现到按钮时。然后我面临的问题是它在单击时显示ButtonText和Clickability,但是当我在底部导航栏中切换到其他片段并再次切换到上一个时,它显示默认的setText即“ join”和clickablity即true
这是我的代码:
public class HomeFragment extends Fragment {
private RecyclerView recyclerView;
private ArrayList<DataSetFire> arrayList;
private FirebaseRecyclerOptions<DataSetFire> options;
private FirebaseRecyclerAdapter<DataSetFire, FirebaseViewHolder> adapter;
private DatabaseReference databaseReference1,databaseReference2;
private FirebaseAuth mAuth;
private Dialog dialog;
private static int i=0;
public HomeFragment() {
}
public static HomeFragment newInstance(String param1, String param2) {
HomeFragment fragment = new HomeFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
recyclerView = view.findViewById(R.id.recyclerview9);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
arrayList = new ArrayList<>();
databaseReference1 = FirebaseDatabase.getInstance().getReference().child("Matches");
databaseReference1.keepSynced(true);
options = new FirebaseRecyclerOptions.Builder<DataSetFire>().setQuery(databaseReference1, DataSetFire.class).build();
adapter = new FirebaseRecyclerAdapter<DataSetFire, FirebaseViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull FirebaseViewHolder holder, int position, @NonNull DataSetFire model) {
holder.setMatchno(model.getMatchno());
holder.setTimedate(model.getTimedate());
holder.setFirstprize(model.getFirstprize());
holder.setMatchtype(model.getMatchtype());
holder.setPerkillprize(model.getPerkillprize());
holder.setEntryfee(model.getEntryfee());
holder.setPlayersjoined(model.getPlayersjoined());
holder.setMap(model.getMap());
holder.setMapimg(model.getMapimg());
holder.setMatchmode(model.getMatchmode());
mAuth = FirebaseAuth.getInstance();
String user = mAuth.getCurrentUser().getUid();
databaseReference2 = FirebaseDatabase.getInstance().getReference().child("Users").child(user).child("userdata").child(String.valueOf(i));
databaseReference2.keepSynced(true);
holder.join.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
i=i+1;
final String matchnox = model.getMatchno();
final String timedatex = model.getTimedate();
final String firstprizex = model.getFirstprize();
final String matchtypex = model.getMatchtype();
final String perkillprizex = model.getPerkillprize();
final String entryfeex = model.getEntryfee();
final String playersjoinedx = model.getPlayersjoined();
final String mapx = model.getMap();
final String mapimgx = model.getMapimg();
final String matchmodex = model.getMatchmode();
DatabaseReference user_db = databaseReference2;
user_db.child("matchno").setValue(matchnox);
user_db.child("timedate").setValue(timedatex);
user_db.child("firstprize").setValue(firstprizex);
user_db.child("matchtype").setValue(matchtypex);
user_db.child("perkillprize").setValue(perkillprizex);
user_db.child("entryfee").setValue(entryfeex);
user_db.child("playersjoined").setValue(playersjoinedx);
user_db.child("map").setValue(mapx);
user_db.child("mapimg").setValue(mapimgx);
user_db.child("matchmode").setValue(matchmodex);
holder.join.setText("Permanent");
holder.join.setCickable(false);
}
});
}
@NonNull
@Override
public FirebaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
dialog.dismiss();
return new FirebaseViewHolder(LayoutInflater.from(getContext()).inflate(R.layout.row, parent, false));
}
};
dialog=new Dialog(getActivity());
dialog.setContentView(R.layout.loading);
ImageView error=dialog.findViewById(R.id.loadinggif);
Glide.with(this).load(R.mipmap.loading2).into(error);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
recyclerView.setAdapter(adapter);
return view;
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}