У меня есть recyclerView с функцией смахивания, но каждый раз, когда я смахиваю элемент, он отклоняется, и это не то, что я ищу. Мне нужно что-то вроде смахивания в WhatsApp, то есть после смахивания я могу выполнить действие с этой строкой, не отклоняя ее. В этом случае, например, у меня есть TextView, для которого установлена видимость INVISIBLE, и после полного смахивания я хочу, чтобы он стал видимым в строке с проведенным смахиванием. Есть ли способ добиться этого?
My AdapterClas:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
List <MyModel> list;
Context context;
public MyAdapter(List<MyModel> list, Context context) {
this.list = list;
this.context = context;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemLista = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_row,parent,false);
return new MyViewHolder(itemLista);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
MyModel myModel = list.get(position);
holder.txt1.setText(String.valueOf(myModel.getPosition()));
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
TextView txt1;
TextView txt2;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
txt1 = itemView.findViewById(R.id.row_textView);
txt2 = itemView.findViewById(R.id.row_textView2);
//I WANT TO MAKE THIS txt2 BECOME VISIBLE AFTER SWIPE
}
}
Функциональность смахивания:
public void swipe () {
ItemTouchHelper.Callback itemTouch = new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
int dragFlag = ItemTouchHelper.ACTION_STATE_IDLE;
int swipeFlag = ItemTouchHelper.START|ItemTouchHelper.END;
return makeMovementFlags(dragFlag,swipeFlag);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
Toast.makeText(MainActivity.this, "Swiped", Toast.LENGTH_SHORT).show();
}
};
new ItemTouchHelper(itemTouch).attachToRecyclerView(recyclerView);
}
Моя строка макета RecyclerView:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_margin="6dp"
android:orientation="vertical"
android:background="@android:color/holo_orange_light"
android:layout_height="wrap_content">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/row_textView"
android:textColor="@android:color/black"
android:textSize="22sp"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="22sp"
android:visibility="invisible"
android:id="@+id/row_textView2"/>