2017-03-14 41 views
5

Burada, kullanıcının kabul ettiği veya gönderdiği istekleri görüntüleyen bir Geçmiş sayfasına sahibim. Kullanıcının, kullanıcının sahip olduğu tüm geçmişini silmeye başarılı bir şekilde basabildim. Artık kullanıcının bir kaydı silip kaydırarak her seferinde bir tane silebilmesini istiyorum. Burada gördüğüm diğer sorular şu ana kadar benim kodlarına benzer görünmüyor çünkü gerçekten bir şey denemedimRecyclerView'da silmek için nasıl kaydırılır?

RecyclerView rView; 
Button clear; 
DatabaseReference dRef; 
LinearLayoutManager llm; 
String id; 

View myView; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    myView = inflater.inflate(R.layout.history, container, false); 

    FirebaseUser fu = FirebaseAuth.getInstance().getCurrentUser(); 
    id = fu.getUid(); 
    dRef = FirebaseDatabase.getInstance().getReference().child("History"+id); 
    clear = (Button) myView.findViewById(R.id.clear); 
    rView = (RecyclerView) myView.findViewById(R.id.history_list); 
    rView.setHasFixedSize(true); 
    llm = new LinearLayoutManager(getActivity()); 
    llm.setReverseLayout(true); 
    llm.setStackFromEnd(true); 
    rView.setLayoutManager(llm); 

    clear.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      dRef.removeValue(); 
     } 
    }); 

    return myView; 
} 
@Override 
public void onStart() { 
    super.onStart(); 
    FirebaseRecyclerAdapter<HistoryData, HistoryFragment.RequestViewHolder> fra = new FirebaseRecyclerAdapter<HistoryData, HistoryFragment.RequestViewHolder>(
      HistoryData.class, 
      R.layout.historylistview, 
      HistoryFragment.RequestViewHolder.class, 
      dRef 
    ) { 
     @Override 
     protected void populateViewHolder(final HistoryFragment.RequestViewHolder viewHolder, HistoryData model, final int position) { 

      viewHolder.setTrans(model.getTrans()); 
      viewHolder.setRequestDeadline(model.getRequestDeadline()); 
      viewHolder.setRequestDescription(model.getRequestDescription()); 
      viewHolder.setDateTimeAccepted(model.getDateTimeAccepted()); 
      viewHolder.setRequestLocation(model.getRequestLocation()); 
      viewHolder.setProfile(getApplicationContext() ,model.getProfile()); 

     } 

    }; 
    rView.setAdapter(fra); 
} 
public static class RequestViewHolder extends RecyclerView.ViewHolder{ 
    View myView; 

    public RequestViewHolder(View itemView) { 
     super(itemView); 

     myView = itemView; 
    } 
    public void setTrans(String profile){ 
     TextView trans = (TextView) myView.findViewById(R.id.transaction); 
     trans.setText(profile); 
    } 
    public void setRequestDeadline(String dead){ 
     TextView rdead = (TextView) myView.findViewById(R.id.rDead); 
     rdead.setText(dead); 
    } 
    public void setRequestDescription(String desc){ 
     TextView rdesc = (TextView) myView.findViewById(R.id.rDesc); 
     rdesc.setText(desc); 
    } 
    public void setDateTimeAccepted(String date){ 
     TextView dta = (TextView) myView.findViewById(R.id.rAccept); 
     dta.setText(date); 
    } 
    public void setRequestLocation(String loc){ 
     TextView rloc = (TextView) myView.findViewById(R.id.rLoc); 
     rloc.setText(loc); 
    } 
    public void setProfile(Context c, String profile){ 
     ImageView rprofile = (ImageView) myView.findViewById(R.id.HPicture); 
     Picasso.with(c).load(profile).into(rprofile); 
    } 
} 

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
} 

HistoryFragment.java.

+1

Teşekkür ederim @Rotwang – exc3m

cevap

1

Sıfırdan işlevsellik oluşturmak istemediğiniz sürece varolan bir kitaplığı/widget'ı kullanmanız gerekecektir. Örneğin

:

https://android-arsenal.com/details/1/4897

Orada ama temelde tam talimatları vardır:

mRecyclerView = new CdsRecyclerView(this); 
mRecyclerView = (CdsRecyclerView) findViewById(R.id.recyclerView); 
mRecyclerView.setHasFixedSize(true); 
mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 

// Adapter: 

mRecyclerViewAdapter = new RecyclerViewAdapter(this, getData()); 
mRecyclerView.setAdapter(mRecyclerViewAdapter); 

// Enable swipe: 

mRecyclerView.enableItemSwipe(); 

// Listener: 

mRecyclerView.setItemSwipeCompleteListener(new CdsItemTouchCallback.ItemSwipeCompleteListener() { 
     @Override 
     public void onItemSwipeComplete(int position) { 
      Toast.makeText(MainActivity.this, "Item was swiped:" + position, 
        Toast.LENGTH_SHORT).show(); 
     } 
    }); 
9

Oldukça basit ve siz de herhangi bir 3. parti kitaplığı kullanmadan yapabilirsiniz.

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

Ve şimdi geri arama ,

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

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

     @Override 
     public void onSwiped(RecyclerView.ViewHolder viewHolder, int swipeDir) { 
      Toast.makeText(MyActivity.this, "on Swiped ", Toast.LENGTH_SHORT).show(); 
      //Remove swiped item from list and notify the RecyclerView 
      final int position = viewHolder.getAdapterPosition(); 
      adapter.notifyItemRemoved(position); 
     } 
}; 

Artık almayanlar edilmiştir öğenin hangisi olduğunu belirleyebilir. Öğeyi bağdaştırıcınızdan silebilir ve notifyDataSetChanged() yapabilirsiniz.

+0

bunu kodlarıma nereye koyabilirim? – exc3m

+0

Kodu güncelledim, lütfen kontrol edin. –

İlgili konular