如何将文本值从 ViewHolder 发送到 ItemTouchHelper class?
How can I send text value from ViewHolder to ItemTouchHelper class?
我已经学习 Java 和 Android 开发大约一个月了。也许,我不知道某些功能......但我找不到一个星期的任何建议。
我需要从 ViewHolder(由 onBindViewHolder 创建)中的一个字段发送值到重写的方法 onChildDraw(在 class 中,它扩展了 ItemTouchHelper)。但是我不明白,我怎么能这样做。
我想在滑动操作后调用新的 activity 并将字段 "name" 的值发送到那个 activity。我可以用 Intent 做到这一点吗?或者有其他方法?
正在创建 ViewHolder(public class ModelsDataAdapter 扩展 RecyclerView.Adapter):
@Override
public void onBindViewHolder(ModelsViewHolder holder, int position) {
ModelsData model = models.get(position);
holder.name.setText(model.getName()); // <-- I NEED THIS VALUE
holder.tags.setText(model.getTags());
holder.keywords.setText(model.getKeywords());
holder.cost.setText(model.getCost().toString());
//-- some code --//
}
我的 onChildDraw(public class SwipeControl 扩展 ItemTouchHelper.Callback):
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
//-- some code --//
int x = 0;
if (dX < -200){ //
viewHolder.itemView.findViewById(R.id.card_foreground).setTranslationX(dX / 3);
} else if (dX > 200){
viewHolder.itemView.findViewById(R.id.card_foreground).setTranslationX(dX / 3);
openStatCard();
} else if (dX == 0){
checkActivity = false;
}
}
打开新的 activity(在 SwipeControl.class 内):
private void openStatCard(){
if (!checkActivity) {
checkActivity = true;
Intent intent = new Intent(context, StatCards.class);
intent.putExtra("choosingModel", model); // <-- PUT "name" IN "model"
context.startActivity(intent);
}
}
在onChildDraw
方法中使用viewHolder.getAdapterPositon()方法获取位置。当您需要该值时,只需使用该位置从 models
列表
中查找 Name
编辑
在 onChildDraw
中使用 viewHolder.itemView.findViewById(R.id.name);
获取 TextView,然后使用 getText()
方法获取名称。
我已经学习 Java 和 Android 开发大约一个月了。也许,我不知道某些功能......但我找不到一个星期的任何建议。 我需要从 ViewHolder(由 onBindViewHolder 创建)中的一个字段发送值到重写的方法 onChildDraw(在 class 中,它扩展了 ItemTouchHelper)。但是我不明白,我怎么能这样做。 我想在滑动操作后调用新的 activity 并将字段 "name" 的值发送到那个 activity。我可以用 Intent 做到这一点吗?或者有其他方法?
正在创建 ViewHolder(public class ModelsDataAdapter 扩展 RecyclerView.Adapter):
@Override
public void onBindViewHolder(ModelsViewHolder holder, int position) {
ModelsData model = models.get(position);
holder.name.setText(model.getName()); // <-- I NEED THIS VALUE
holder.tags.setText(model.getTags());
holder.keywords.setText(model.getKeywords());
holder.cost.setText(model.getCost().toString());
//-- some code --//
}
我的 onChildDraw(public class SwipeControl 扩展 ItemTouchHelper.Callback):
@Override
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
//-- some code --//
int x = 0;
if (dX < -200){ //
viewHolder.itemView.findViewById(R.id.card_foreground).setTranslationX(dX / 3);
} else if (dX > 200){
viewHolder.itemView.findViewById(R.id.card_foreground).setTranslationX(dX / 3);
openStatCard();
} else if (dX == 0){
checkActivity = false;
}
}
打开新的 activity(在 SwipeControl.class 内):
private void openStatCard(){
if (!checkActivity) {
checkActivity = true;
Intent intent = new Intent(context, StatCards.class);
intent.putExtra("choosingModel", model); // <-- PUT "name" IN "model"
context.startActivity(intent);
}
}
在onChildDraw
方法中使用viewHolder.getAdapterPositon()方法获取位置。当您需要该值时,只需使用该位置从 models
列表
Name
编辑
在 onChildDraw
中使用 viewHolder.itemView.findViewById(R.id.name);
获取 TextView,然后使用 getText()
方法获取名称。