2016-08-28 11 views
8

मैं इसRecyclerView स्वाइप क्लिक

<Layout> 
    <BackgroundView>   
    <ForegroundView> 
</Layout> 

की तरह एक RecyclerView पंक्ति लेआउट मैं की तरह

@Override 
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { 
    adapter.onItemSwiped(viewHolder); 
} 

@Override 
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, 
         float dX, float dY, int actionState, boolean isCurrentlyActive) { 

    View foregroundView = ((myViewHolder)viewHolder).getForegroundView(); 
    getDefaultUIUtil().onDraw(c, recyclerView, foregroundView, dX, dY, actionState, isCurrentlyActive); 

    //getSwipeLimit() used below returns the width of the delete icon 
    float translationX = Math.min(-dX, ((myViewHolder) viewHolder).getSwipeLimit()); 
    foregroundView.setTranslationX(-translationX); 
} 

मैं स्वाइप (आंशिक) अग्रभूमि दृश्य पर संभाल करने ItemTouchHelper का उपयोग कर रहा है मेरे एडाप्टर वर्ग के BindViewHolder में पृष्ठभूमि दृश्य के लिए एक क्लिक श्रोता सेट किया है।

@Override 
public void onBindViewHolder(WhiteListViewHolder holder, Cursor cursor) { 
    //get name and number from the cursor here 

    holder.name.setText(name); 
    holder.number.setText(number); 

    holder.deleteButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Log.d("whitelist", "yes clicked"); 
     } 
    }); 
} 

समस्या है, पृष्ठभूमि दृश्य क्लिक्स को स्वीकार जब दृश्य स्वाइप नहीं है, लेकिन करने के बाद दृश्य बाहर स्वाइप है, पृष्ठभूमि दृश्य क्लिक्स स्वीकार करने बंद हो जाता है है।

enter image description here

ऊपर छवि चर्चा करते हुए अगर मैं हटाएँ बटन पर क्लिक करें, स्वाइप दृश्य कभी कभी वसूल किया जाता है और यह क्लिक कब्जा नहीं है।

यदि मैंने पूरा दृश्य स्वाइप कर दिया है, तो खाली खाली स्थान पर क्लिक करके स्वाइप किए गए दृश्य को वापस लाया जाता है।

अग्रिम धन्यवाद।

+0

आप Github में अपनी परियोजना का हिस्सा इतना है कि मैं इसे एक कोशिश दे सकता है सकते हैं? –

+0

@ReazMurshed आप यहां प्रोजेक्ट पा सकते हैं: https://github.com/amk47/testproject – AMK

+0

इस लाइब्रेरी को चेकआउट करें: मैंने यह प्रोजेक्ट में उपयोग किया है, यह मेरे लिए पूरी तरह से काम करता है। अगर यह मदद करता है तो मुझे बताएं: https://github.com/daimajia/AndroidSwipeLayout –

उत्तर

0

मैंने कार्य के पहले भाग को हल किया - अब स्वाइप किए बिना पता नहीं चला। लेकिन क्लिक कड़ी चोट के बाद पता नहीं लगा ...

@Override 
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) { 
    if(actionState == ItemTouchHelper.ACTION_STATE_SWIPE){ 
    if (dX < 0) { 
     backgroundView.setVisibility(View.VISIBLE); 
    } 
    else { 
     backgroundView.setVisibility(View.GONE); 
    } 
    } 
} 
संबंधित मुद्दे