Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将文本值从ViewHolder发送到ItemTouchHelper类?_Java_Android_Android Activity_Android Recyclerview_Itemtouchhelper - Fatal编程技术网

Java 如何将文本值从ViewHolder发送到ItemTouchHelper类?

Java 如何将文本值从ViewHolder发送到ItemTouchHelper类?,java,android,android-activity,android-recyclerview,itemtouchhelper,Java,Android,Android Activity,Android Recyclerview,Itemtouchhelper,我已经学习Java和Android开发大约一个月了。也许,我不知道一些特征。。。但我一周内找不到任何建议。 我需要将值从ViewHolder中的一个字段(由onBindViewHolder创建)发送到重写的方法OnChildraw(在类中,它扩展了ItemTouchHelper)。但我不明白,我该怎么做。 我想在滑动操作后调用新活动,并将字段“name”的值发送给该活动。我可以有目的地这样做吗?或者你有别的办法 创建ViewHolder(公共类ModelsDataAdapter扩展了Recycl

我已经学习Java和Android开发大约一个月了。也许,我不知道一些特征。。。但我一周内找不到任何建议。 我需要将值从ViewHolder中的一个字段(由onBindViewHolder创建)发送到重写的方法OnChildraw(在类中,它扩展了ItemTouchHelper)。但我不明白,我该怎么做。 我想在滑动操作后调用新活动,并将字段“name”的值发送给该活动。我可以有目的地这样做吗?或者你有别的办法

创建ViewHolder(公共类ModelsDataAdapter扩展了RecyclerView.Adapter):

@覆盖
BindViewHolder上的公共无效(ModelsViewHolder,int位置){
ModelsData model=models.get(位置);
holder.name.setText(model.getName());//200){
viewHolder.itemView.findViewById(R.id.card_前台).setTranslationX(dX/3);
openStatCard();
}else如果(dX==0){
checkActivity=false;
}
}
打开新活动(在SwipeControl.class内):

private void openStatCard(){
如果(!检查活动){
checkActivity=true;
意向意向=新意图(上下文、StatCards.class);

intent.putExtra(“choosingModel”,model);//内
onchildraw
方法使用viewHolder.getAdapterPositon()方法获取位置。当需要该值时,只需使用该位置从
模型列表中查找
名称

编辑


onchildraw
内部使用
viewHolder.itemView.findViewById(R.id.name);
获取文本视图,然后使用
getText()
方法获取名称。

内部
onchildraw
方法使用viewHolder.getadapterposition()方法获取位置。当需要该值时,只需使用该位置从
型号列表中查找
名称

编辑


内部
onchildraw
使用
viewHolder.itemView.findviewbyd(R.id.name);
获取文本视图,然后使用
getText()
方法获取名称。

您可以使用接口您可以使用接口我猜,我理解错了。或者我解释的情况不是很好。因为,我不能这样做。我在BindViewHolder和OnChildraw上的方法位于不同的类中。对于onBindViewHolder-公共类模型,DataAdapter扩展了RecyclerView.Adapterr、 对于OnChildRaw,公共类SwipeControl扩展了ItemTouchHelper。Callback@MikhailShport为了满足您的要求,我对我的答案做了一些修改。请让我知道这是否有帮助。谢谢!我想,我理解错了。或者我解释了我的情况。因为,我不能这样做。我在BindViewHolder和onCh上的方法ildDraw位于不同的类中。对于onBindViewHolder-公共类模型,DataAdapter扩展了RecyclerView.Adapter。对于OnChildRAW-公共类SwipeControl扩展了ItemTouchHelper。Callback@MikhailShport为了满足您的要求,我对我的答案做了一些修改。如果有帮助,请告诉我。谢谢!
@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 --//
}
@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;
    }
}
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);
    }
}