我已经学习 Java 和 Android 开发大约一个月了。也许,我不知道一些功能......但我一周找不到任何建议。 我需要将 ViewHolder 中的字段之一(由 onBindViewHolder 创建)的值发送到重写的 onChildDraw 方法(在类中,它扩展了 ItemTouchHelper)。但我不明白,我该怎么做。 我想在滑动操作后调用新 Activity 并将字段“名称”的值发送到该 Activity 。我可以用 Intent 做到这一点吗?或者也许还有其他方法?
创建ViewHolder(公共(public)类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)类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()
方法获取Name。
关于java - 如何将文本值从 ViewHolder 发送到 ItemTouchHelper 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57455461/