2017-05-04 4 views
0

Ich habe eine Recycler Ansicht und cards.I will eine Geste wie Swipe-up des card.My Code zu entfernen ist:Wie implementiere ich Kartenswipeup in RecyclerView, GridLayout?

 recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
     data_list = new ArrayList<>(); 
     load_data(); 
     gridLayoutManager = new GridLayoutManager(this, 1,LinearLayoutManager.HORIZONTAL,false); 
     recyclerView.setLayoutManager(gridLayoutManager); 
     recyclerView.setHasFixedSize(true); 
     adapter = new CustomAdapter(this,data_list); 
     recyclerView.setAdapter(adapter); 

CustomAdapterClass:

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { 

private Context context; 
private List<MyData> my_data; 

public CustomAdapter(Context context, List<MyData> my_data) { 
    this.context = context; 
    this.my_data = my_data; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
{ 
    View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false); 
    itemView.setMinimumWidth(parent.getMeasuredWidth()); 
    itemView.setMinimumHeight(parent.getMeasuredHeightAndState()); 
    return new ViewHolder(itemView); 
} 

@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 
    holder.userstory.setText(my_data.get(position).getUserstory()); 
    holder.tasks.setText(my_data.get(position).getTask()); 
    holder.actual.setText(my_data.get(position).getActuals()); 
    holder.estimate.setText(my_data.get(position).getTodos()); 

} 

@Override 
public int getItemCount() 
{ 
    return my_data.size(); 
} 

public class ViewHolder extends RecyclerView.ViewHolder 
{ 
    public TextView userstory,tasks,actual,estimate; 
    public CircularSeekBar seekbar; 

    public ViewHolder(View itemView) 
    { 
     super(itemView); 
     userstory=(TextView) itemView.findViewById(R.id.tvUserStory); 
     tasks=(TextView) itemView.findViewById(R.id.tvTask); 
     actual=(TextView) itemView.findViewById(R.id.tvActual); 
     estimate=(TextView) itemView.findViewById(R.id.tvEstimate); 
    } 
} 
} 

ich die Karten in horizontal bin immer scroll view.Ich möchte Wischgeste hinzufügen, um es zu verwerfen Wie erreiche ich das?

+0

Vielleicht dieser Artikel https://medium.com/@ipaulpro/drag-and-swipe-with-recyclervi ew-b9456d2b1aaf kann Ihnen helfen. – beeb

Antwort

2

Verwenden ItemTouchHelper für recyclerview

diese Zeilen in onCreate() Methode von activty hinzufügen.

ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback); 
itemTouchHelper.attachToRecyclerView(recyclerView); 

Und dann definieren Rückruf für ItemTouchHelper ..

ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) { 

     @Override 
     public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) { 
      Toast.makeText(context, "on Move", Toast.LENGTH_SHORT).show(); 
      return false; 
     } 

     @Override 
     public void onSwiped(final RecyclerView.ViewHolder viewHolder, int swipeDir) { 

       Toast.makeText(context, "on Swipe", Toast.LENGTH_SHORT).show(); 
     } 
    }; 

Wenn Sie Ihre Daten Swiped/Karte zurück zu bekommen, dann nutzen Sie einfach die Zeile ..

adapter.notifyItemChanged(viewHolder.getAdapterPosition()); 

Sie können besuchen : - https://developer.android.com/reference/android/support/v7/widget/helper/ItemTouchHelper.html

+0

Yeah..es funktioniert ..just geändert ItemTouchHelper.UP..Aber nach ein paar Sekunden wird es wieder angezeigt – Akshay

+0

Ich möchte vollständig aus der Liste entfernen ... Wenn ich den ersten Punkt wische, sollte der zweite der werden 1. eine – Akshay

+0

Code diese Zeilen 'arraylist.remove (viewHolder.getAdapterPosition());' und 'adapter.notifyDataSetChanged();' – user392117

Verwandte Themen