This is my code:
Liste.java file:
public class Liste extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
RecyclerView myRecyclerview;
MyAdapter adapter;
List<Dentist> listDentist;
FirebaseDatabase FDB;
DatabaseReference DBR;
@SuppressLint("RestrictedApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_liste );
myRecyclerview = (RecyclerView) findViewById ( R.id.myRecycler );
myRecyclerview.setHasFixedSize ( true );
RecyclerView.LayoutManager LM = new LinearLayoutManager ( getApplicationContext ());
myRecyclerview.setLayoutManager ( LM );
myRecyclerview.setItemAnimator ( new DefaultItemAnimator () );
myRecyclerview.addItemDecoration ( new DividerItemDecoration ( getApplicationContext (),LinearLayoutManager.VERTICAL ) );
listDentist = new ArrayList<> ( );
adapter = new MyAdapter(listDentist);
FDB= FirebaseDatabase.getInstance ();
GetDataFirebase();
void GetDataFirebase(){
DBR = FDB.getReference ("dentistes");
DBR.addChildEventListener ( new ChildEventListener ( ) {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Dentist data = dataSnapshot.getValue (Dentist.class);
//Add to Arraylist
listDentist.add ( data );
//Add list into adapter
myRecyclerview.setAdapter ( adapter );
adapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
} );
}
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{
List<Dentist> listArray;
public MyAdapter (List<Dentist> List){
this.listArray = List;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from ( parent.getContext ()).inflate ( R.layout.itemview,parent,false );
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
Dentist data = listArray.get ( position );
holder.TextNom.setText ( data.getNom () );
holder.TextAdresse.setText ( data.getAdresse () );
}
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView TextNom;
TextView TextAdresse;
public MyViewHolder(View itemView) {
super ( itemView );
TextNom = (TextView)itemView.findViewById ( R.id.nom_dentist );
TextAdresse = (TextView)itemView.findViewById ( R.id.adresse_dentist );
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View itemView) {
Intent intent = new Intent(itemView.getContext(), DetailsPage.class);
itemView.getContext().startActivity(intent);
// get position
int pos = getAdapterPosition();
// check if item still exists
if(pos != RecyclerView.NO_POSITION){
Dentist clickedDataItem = listArray.get(pos);
Toast.makeText(itemView.getContext(), "You clicked " + clickedDataItem.getNom(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
@Override
public int getItemCount() {
return listArray.size ();
}
}
My class model:
public class Dentist {
private String Nom;
private String Adresse;
private String NumTel;
private String Email;
public String getNom() {
return Nom;
}
public void setNom(String nom) {
Nom = nom;
}
public String getAdresse() {
return Adresse;
}
public void setAdresse(String adresse) {
Adresse = adresse;
}
public String getNumTel() {
return NumTel;
}
public void setNumTel(String numTel) {
NumTel = numTel;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
}
DetailsPage.java:
public class DetailsPage extends AppCompatActivity {
Toolbar toolbar;
TextView DetailNom;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_details_page );
this.toolbar = (Toolbar) findViewById(R.id.toolbar);
//definir notre toolbar en tant qu'actionBar
setSupportActionBar(toolbar);
setTitle ( "Détails du Médecin" );
DetailNom = (TextView)findViewById ( R.id.detail_nom );
}
}
My questions: At the present in my recyclerView it shows me only Nom and Adresse of Dentists in my DentistList (retrieved from my firebase databse). How can I modify my code : when i clicked an item in my recyclerView ,in my second Activity "DetailsPage " it shows me the clicked item with more details ( Nom, Adresse ,NumTel and Email). I need help. Thanks.