【问题标题】:Cardview onclick activityCardview onclick 活动
【发布时间】:2017-04-17 20:39:19
【问题描述】:

当点击卡片视图时,我正在使用卡片视图创建一个回收器视图,它会打开一个新活动,而且我需要传递我的 firebase 数据库的子节点的名称/ID,我已经查看了很多教程,但我不是了解如何实现但徒劳无功,以下是我的代码,我制作了一个 itemClickListener 接口来传递视图和位置。

公共类 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;
    }
}

}

【问题讨论】:

  • 我不确定您在这篇文章中的要求是什么?您是否希望正确实现 recyclerview 适配器?
  • 我想要一个 onclick 功能适用于我的 recyclerview 中显示的卡片视图,这样当我选择卡片时,我可以移动到下一个活动

标签: android android-recyclerview android-cardview


【解决方案1】:

声明卡片视图

 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());
            }
        });
    }

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    相关资源
    最近更新 更多