我正在与CardView
合作并陷入一个小问题。我有RecyclerView
我正在显示一些卡片。
问题是如何在点击时将卡变量传递给另一个activity
?
我有以下查看持有人:
public class DisciplinaViewHolder extends RecyclerView.ViewHolder {
protected TextView disciplinaNome;
protected TextView disciplinaCodigo;
protected TextView disciplinaCriador;
protected TextView disciplinaProfessor;
protected TextView disciplinaPeriodo;
protected CardView card;
protected ImageButton calendarButton;
public DisciplinaViewHolder(View itemView) {
super(itemView);
disciplinaNome = (TextView) itemView.findViewById(R.id.nome);
disciplinaCodigo = (TextView) itemView.findViewById(R.id.codigo);
disciplinaCriador = (TextView) itemView.findViewById(R.id.criadaPor);
disciplinaProfessor = (TextView) itemView.findViewById(R.id.professor);
disciplinaPeriodo = (TextView) itemView.findViewById(R.id.periodo);
calendarButton = (ImageButton) itemView.findViewById(R.id.calendarBuutton);
calendarButton.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), CalendarActivity.class);
v.getContext().startActivity(intent);
}
});
card = (CardView) itemView;
}
}
一个例子是:假设我有3张牌:
>Card1(name = "First Card"),
>Card2(name = "Second Card"),
>Card3(name = "Third Card").
当我在其中一张卡片中按button
时,我想从被按下的卡片中获取名称变量,并将其传递到intent
方法的onClick()
内。所以,如果我按下Card1中的button
,我会传递值#34; First Card"到我的下一个activity
。
提前谢谢。
答案 0 :(得分:1)
从按钮访问TextView单击使用v.getParent
从布局访问View:
ViewGroup parentView = (ViewGroup)v.getParent();
TextView disciplinaNome =(TextView)parentView.findViewById(R.id.nome);
Intent intent = new Intent(v.getContext(), CalendarActivity.class);
intent.putExtra("name", disciplinaNome.getText().toString());
v.getContext().startActivity(intent);
或者您也可以使用getTag/setTag
根据卡片点击访问名称值。
答案 1 :(得分:1)
使用额外内容:
Intent intent = new Intent(v.getContext(), CalendarActivity.class);
intent.putExtra("extraName", extraValue);
请注意,您将遇到使用您的方法启动良好活动的问题。
由于RecyclerViews回收列表项,您需要在onBindViewHolder
方法中而不是在ViewHolder构造函数中设置单击侦听器。
答案 2 :(得分:0)
尝试在onBindViewHolder中添加意图
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(view.getContext(),
MainActivity.class);
intent.putExtra("onClick",viewHolder.getAdapterPosition);
Log.i("CustomAdapter",viewHolder.getAdapterPosition()+"");
view.getContext().startActivity(intent);
}
});