Reputation: 13
I've been learning Java and Android Development for about a month. Maybe, I don't know some features... But I can't find any advise for a week. I need to send value from one of my fields in ViewHolder (created by onBindViewHolder) to overrided method onChildDraw (in class, that extends ItemTouchHelper). But I can't understand, how can I do this. I want to call new activity after swipe action and send value of field "name" to that activity. Can I do this with Intent? Or maybe have other way?
Creating ViewHolder (public class ModelsDataAdapter extends 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 --//
}
My onChildDraw (public class SwipeControl extends 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;
}
}
Opening new activity (inside 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);
}
}
Upvotes: 1
Views: 402
Reputation: 8844
Inside onChildDraw
method use viewHolder.getAdapterPositon() method to get the position. And when you need the value just use that position to find Name
from the models
list
EDIT
Inside onChildDraw
get the TextView using viewHolder.itemView.findViewById(R.id.name);
and then use getText()
method to get the Name.
Upvotes: 1