在onBindViewHolder中设置内容

时间:2019-12-07 10:07:00

标签: android android-fragments android-recyclerview bottomnavigationview android-viewholder

我想设置一些属性,例如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();
}

}

0 个答案:

没有答案