Cardview onclick activity
Cardview onclick activity
我正在使用 cardviews 制作回收站视图,当单击 cardview 时它会打开一个新的 activity 另外我需要传递我的 firebase 数据库 child 的 name/id,我看了很多教程,但我没有了解如何实现,但徒劳无功,以下是我的代码我制作了一个 itemClickListener 接口来传递视图和位置。
public class MedicalData 扩展了 AppCompatActivity {
private RecyclerView patientdata;
private DatabaseReference mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_medical_data);
mDatabase = FirebaseDatabase.getInstance().getReference().child("Patients");
patientdata = (RecyclerView) findViewById(R.id.patientdata);
patientdata.setHasFixedSize(true);
patientdata.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<PatientRequest, DataViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<PatientRequest, DataViewHolder>(
PatientRequest.class,
R.layout.datatype,
DataViewHolder.class,
mDatabase
) {
@Override
public void populateViewHolder(DataViewHolder viewHolder, PatientRequest model, int position) {
viewHolder.setName(model.getPatientName());
viewHolder.setAge(model.getPatientAge());
viewHolder.setonClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, int pos) {
Intent int2 = new Intent(MedicalData.this, ShowPatientDetails.class);
MedicalData.this.startActivity(int2);
}
});
}
};
patientdata.setAdapter(firebaseRecyclerAdapter);
}
public static class DataViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View mView;
ItemClickListener itemClickListener;
public DataViewHolder(View itemView) {
super(itemView);
mView = itemView;
itemView.setOnClickListener(this);
}
public void setName(String name) {
TextView pname = (TextView) mView.findViewById(R.id.pname1);
pname.setText(name);
}
public void setAge(String age) {
TextView page = (TextView) mView.findViewById(R.id.page1);
page.setText(age);
}
@Override
public void onClick(View v) {
this.itemClickListener.onItemClick(v , getLayoutPosition());
}
public void setonClickListener(ItemClickListener ic)
{
this.itemClickListener=ic;
}
}
}
声明卡片视图
static class ProductViewHolder extends RecyclerView.ViewHolder{
private TextView tvPatientName;
private TextView tvPatientAge;
private CardView cvPatient;
public ProductViewHolder(View itemView) {
super(itemView);
tvPatientName = (TextView)itemView.findViewById(R.id.tvPatientName);
tvPatientAge = (TextView)itemView.findViewById(R.id.tvPatientAge);
cvPatient = (CardView)itemView.findViewById(R.id.cvPatient);
}
}
然后在popluateViewHolder
@Override
public void populateViewHolder(DataViewHolder viewHolder, PatientRequest model, int position) {
viewHolder.tvPatientName.setText(model.getPatientName());
viewHolder.tvPatientAge.setText(model.getPatientAge());
viewHolder.cvPatient.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("Tag", "Cardview clicked"+model.getPatientName());
}
});
}
希望对您有所帮助
我正在使用 cardviews 制作回收站视图,当单击 cardview 时它会打开一个新的 activity 另外我需要传递我的 firebase 数据库 child 的 name/id,我看了很多教程,但我没有了解如何实现,但徒劳无功,以下是我的代码我制作了一个 itemClickListener 接口来传递视图和位置。
public class MedicalData 扩展了 AppCompatActivity {
private RecyclerView patientdata;
private DatabaseReference mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_medical_data);
mDatabase = FirebaseDatabase.getInstance().getReference().child("Patients");
patientdata = (RecyclerView) findViewById(R.id.patientdata);
patientdata.setHasFixedSize(true);
patientdata.setLayoutManager(new LinearLayoutManager(this));
}
@Override
public void onStart() {
super.onStart();
FirebaseRecyclerAdapter<PatientRequest, DataViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<PatientRequest, DataViewHolder>(
PatientRequest.class,
R.layout.datatype,
DataViewHolder.class,
mDatabase
) {
@Override
public void populateViewHolder(DataViewHolder viewHolder, PatientRequest model, int position) {
viewHolder.setName(model.getPatientName());
viewHolder.setAge(model.getPatientAge());
viewHolder.setonClickListener(new ItemClickListener() {
@Override
public void onItemClick(View v, int pos) {
Intent int2 = new Intent(MedicalData.this, ShowPatientDetails.class);
MedicalData.this.startActivity(int2);
}
});
}
};
patientdata.setAdapter(firebaseRecyclerAdapter);
}
public static class DataViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
View mView;
ItemClickListener itemClickListener;
public DataViewHolder(View itemView) {
super(itemView);
mView = itemView;
itemView.setOnClickListener(this);
}
public void setName(String name) {
TextView pname = (TextView) mView.findViewById(R.id.pname1);
pname.setText(name);
}
public void setAge(String age) {
TextView page = (TextView) mView.findViewById(R.id.page1);
page.setText(age);
}
@Override
public void onClick(View v) {
this.itemClickListener.onItemClick(v , getLayoutPosition());
}
public void setonClickListener(ItemClickListener ic)
{
this.itemClickListener=ic;
}
}
}
声明卡片视图
static class ProductViewHolder extends RecyclerView.ViewHolder{
private TextView tvPatientName;
private TextView tvPatientAge;
private CardView cvPatient;
public ProductViewHolder(View itemView) {
super(itemView);
tvPatientName = (TextView)itemView.findViewById(R.id.tvPatientName);
tvPatientAge = (TextView)itemView.findViewById(R.id.tvPatientAge);
cvPatient = (CardView)itemView.findViewById(R.id.cvPatient);
}
}
然后在popluateViewHolder
@Override
public void populateViewHolder(DataViewHolder viewHolder, PatientRequest model, int position) {
viewHolder.tvPatientName.setText(model.getPatientName());
viewHolder.tvPatientAge.setText(model.getPatientAge());
viewHolder.cvPatient.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d("Tag", "Cardview clicked"+model.getPatientName());
}
});
}
希望对您有所帮助