Android 在回收器视图中单击项目是否获取TextView的值?
当我单击RecyclerView中项目的TextView时,我需要TextView的值。我不希望整个项目可点击,我只需要单一的文本查看项目可点击,这是“countNumber”在下面的代码。当我点击它时,我想得到countNumber显示的文本数据 回收器适配器Android 在回收器视图中单击项目是否获取TextView的值?,android,android-recyclerview,Android,Android Recyclerview,当我单击RecyclerView中项目的TextView时,我需要TextView的值。我不希望整个项目可点击,我只需要单一的文本查看项目可点击,这是“countNumber”在下面的代码。当我点击它时,我想得到countNumber显示的文本数据 回收器适配器 public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> { ArrayList<UserDat
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
ArrayList<UserData> dataSet = new ArrayList<>();
public CustomAdapter(ArrayList<UserData> data) {
this.dataSet = data;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card_layout, parent, false);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
holder.heading.setText(dataSet.get(listPosition).getHeading());
holder.description.setText(dataSet.get(listPosition).getDescription());
holder.countNumber.setText(String.valueOf(dataSet.get(listPosition).getCount()));
holder.time.setText(dataSet.get(listPosition).getTime());
holder.date.setText(dataSet.get(listPosition).getDate());
holder.place.setText(dataSet.get(listPosition).getPlace());
}
@Override
public int getItemCount() {
return dataSet.size();
}
public void countIncrease() {
}
public List<UserData> getList() {
return this.dataSet;
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
TextView heading;
TextView description;
TextView countNumber;
TextView time;
TextView date;
TextView place;
public MyViewHolder(final View itemView) {
super(itemView);
this.countNumber = (TextView) itemView.findViewById(R.id.countId);
this.heading = (TextView) itemView.findViewById(R.id.textViewName);
this.description = (TextView) itemView.findViewById(R.id.textViewVersion);
this.place = (TextView) itemView.findViewById(R.id.placeId);
this.time = (TextView) itemView.findViewById(R.id.timeId);
this.date = (TextView) itemView.findViewById(R.id.dateId);
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//i need counterNumber value here
Log.v("loo", "Click");
}
});
}
}
}
试试下面的代码
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String value=((TextView)v).getText();
//i need counterNumber value here
Log.v("loo", value);
}
});
试试这个代码
将countNumber
转换为final
final this.countNumber = (TextView) itemView.findViewById(R.id.countId);
并且,从TextView
获取值,即countNumber
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//i need counterNumber value here
String value = this.countNumber.getText().toString().trim();
Log.v("loo", "countNumber=="+value);
}
});
如@ramesh-r所述,如果您想从适配器的内部获取,可以使用
((TextView)v.getText()获取它代码>
但是,如果您想从活动中获得价值,则需要为其创建并实现一个接口。首先在适配器中创建接口(带有注释的代码):
可以使用((TextView)v.getText()获取onClick()中的文本;
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//i need counterNumber value here
String value = this.countNumber.getText().toString().trim();
Log.v("loo", "countNumber=="+value);
}
});
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
((TextView)v).getText();
}
});
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
ArrayList<UserData> dataSet = new ArrayList<>();
public CustomAdapter(ArrayList<UserData> data) {
this.dataSet = data;
}
// Define listener member variable
private static OnRecyclerViewItemClickListener mListener;
// Define the listener interface
public interface OnRecyclerViewItemClickListener {
void onItemClicked(String text);
}
// Define the method that allows the parent activity or fragment to define the listener.
public void setOnRecyclerViewItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mListener = listener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
...
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int listPosition) {
...
}
...
public static class MyViewHolder extends RecyclerView.ViewHolder {
...
public MyViewHolder(final View itemView) {
super(itemView);
...
this.countNumber.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// send the text to the listener, i.e Activity.
mListener.onItemClicked(((TextView)v).getText());
}
});
}
}
...
}
adapter = new CustomAdapter(dbHelper.getAllIncidents());
// Interface implementation.
adapter.setOnRecyclerViewItemClickListener(new YourAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClicked(String text) {
Log.d(TAG, "Text is = " + text);
}
});
recyclerView.setAdapter(adapter);