У меня есть приложение, которое отображает Cardviews в адаптере утилизатора. Каждое представление карты получает свои данные из Firebase. Мое приложение показывает классы, на которые пользователь может подписаться, и я хочу, чтобы пользователь мог щелкнуть по просмотру карты с нужным классом и сохранить его под своим UID.
Вот мой код деятельности, которая показывает уроки английского языка:
private FirebaseDatabase database;
private DatabaseReference myRef;
private List<Listdata> list;
private RecyclerView recyclerview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_english_classes);
recyclerview = (RecyclerView) findViewById(R.id.rview);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("English");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
list = new ArrayList<>();
// String key = myRef.child("English").push().getKey();
// System.out.println(key);
// StringBuffer stringbuffer = new StringBuffer();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
Class_model new_class = dataSnapshot1.getValue(Class_model.class);
String nameofclass = new_class.getDate_clasname();
String teacherofclass = new_class.getTeacher();
String roomnumberofclass = new_class.getRoom_number();
Listdata listdata = new Listdata(nameofclass, teacherofclass, roomnumberofclass);
//String name = userdetails.getName();
//String email = userdetails.getEmail();
//String address = userdetails.getAddress();
listdata.setDate_class(nameofclass);
listdata.setTeacher(teacherofclass);
listdata.setRnumber(roomnumberofclass);
list.add(listdata);
// Toast.makeText(MainActivity.this,""+name,Toast.LENGTH_LONG).show();
}
RecyclerviewAdapter recycler = new RecyclerviewAdapter(list);
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(English_classes.this);
recyclerview.setLayoutManager(layoutmanager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(recycler);
}
@Override
public void onCancelled(DatabaseError error) {
AlertDialog alertDialog = new AlertDialog.Builder(English_classes.this).create();
alertDialog.setTitle("Error");
alertDialog.setMessage("Check your connection! If, problem persists please email svhsdev@vigoschools.org!");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.show();
// Failed to read value
// Log.w(TAG, "Failed to read value.", error.toException());
}
});
}
//});
Вот код для моего адаптера Recycler:
public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerviewAdapter.MyHolder>{
List<Listdata> listdata;
public RecyclerviewAdapter(List<Listdata> listdata) {
this.listdata = listdata;
}
@Override
public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cardview_class_model,parent,false);
MyHolder myHolder = new MyHolder(view);
return myHolder;
}
public void onBindViewHolder(MyHolder holder, int position) {
Listdata data = listdata.get(position);
holder.vdate_class.setText(data.getDate_class());
holder.vteacher.setText(data.getTeacher());
holder.vrnumber.setText(data.getRnumber());
}
@Override
public int getItemCount() {
return listdata.size();
}
class MyHolder extends RecyclerView.ViewHolder{
TextView vdate_class , vteacher,vrnumber;
public MyHolder(View itemView) {
super(itemView);
vdate_class = (TextView) itemView.findViewById(R.id.date_class_name);
vteacher = (TextView) itemView.findViewById(R.id.room_number);
vrnumber = (TextView) itemView.findViewById(R.id.teacher);
}
}
}
Вот мой код для класса модели Class:
public class Class_model {
String date_clasname;
String teacher;
String room_number;
public Class_model(){};
public Class_model(String date_cname, String teach, String room_n){
//subject = subject2;
date_clasname = date_cname;
teacher = teach;
room_number = room_n;
}
public String getDate_clasname() {
return date_clasname;
}
public void setDate_clasname(String date_clasname) {
this.date_clasname = date_clasname;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public String getRoom_number() {
return room_number;
}
public void setRoom_number(String room_number) {
this.room_number = room_number;
}
}
Вот мой код для класса List Data:
public class Listdata {
public String date_class;
public String teacher;
public String rnumber;
public Listdata(String date_class, String teacher, String rnumber) {
this.date_class = date_class;
this.teacher = teacher;
this.rnumber = rnumber;
}
public String getDate_class() {
return date_class;
}
public void setDate_class(String date_class) {
this.date_class = date_class;
}
public String getTeacher() {
return teacher;
}
public void setTeacher(String teacher) {
this.teacher = teacher;
}
public String getRnumber() {
return rnumber;
}
public void setRnumber(String rnumber) {
this.rnumber = rnumber;
}
}
Вот моя структура базы данных:
{
"English" : {
"-Lgxm2KJPDbQG3C0flA2" : {
"date_clasname" : "english",
"room_number" : "d",
"teacher" : "f"
}
},
"Users" : {
"NnJlSVeqGXhJ2Nab2bhjr0HIpku2" : {
"Classes" : {
"-Lh1YFTY9L8XXZMMOHDb" : {
"date_clasname" : "ggh",
"room_number" : "hhh",
"teacher" : "uu"
},
"email" : "samuelford48@gmail.com",
"grade" : "12",
"name" : "Samuel Ford"
},
"cCEPKCKP99cnNZHxsktTBtOrG5Y2" : {
"Classes" : {
"-Lh1e_Rj9LBn6tkheIqO" : {
"date_clasname" : "gg",
"room_number" : "njgt",
"teacher" : "gg"
}
},
"email" : "matthewford48@gmail.com",
"grade" : "12",
"name" : "Matthew"
},
"zEEYIiWC3NXKa1adlChVtbxBML92" : {
"Classes" : {
"-Lh1b7UnsnNIA4BDDCv_" : {
"date_clasname" : "bb",
"room_number" : "bb",
"teacher" : "hb"
}
},
"email" : "svhsdev@vigoschools.org",
"grade" : "77",
"name" : "sa"
}
}
}
По сути, я хочу, чтобы пользователь мог щелкнуть по классу английского, отображаемому в адаптере утилизатора, и добавить его в список классов, который находится под его идентификатором. У меня нет проблем с моим кодом ... Я просто не знаю, как это сделать.