listview - Android: swipe list item cause clickOnItem -


i want swipe item of listview right , left. purpose use project.

https://github.com/daimajia/androidswipelayout can swipe items when after swipe item, item's onclick called. don't want this. made effort on swipelistener colud not overcome situation totally. can swipe left right without calling onclickitem when swipe itemclick call

swipelayout.addswipelistener(new swipelayout.swipelistener() {             @override             public void onstartopen(swipelayout swipelayout) {                 lineisclose = false;             }              @override             public void onopen(swipelayout swipelayout) {                  lineisclose = false;             }              @override             public void onstartclose(swipelayout swipelayout) {                 lineisclose = false;             }              @override             public void onclose(swipelayout swipelayout) {                 lineisclose  = true ;             }              @override             public void onupdate(swipelayout swipelayout, int i, int i1) {             }              @override             public void onhandrelease(swipelayout swipelayout, float v, float v1) {             }         }); 

enter image description here

edit: code

adapter = new productslistadapter(getactivity(), currentlist);             adapter.setmode(attributes.mode.multiple);             listview.setadapter(adapter);  

package com.akakce.market.adapters;  import android.content.context; import android.graphics.color; import android.graphics.paint; import android.os.handler; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview;  import com.daimajia.swipe.swipelayout; import com.daimajia.swipe.adapters.baseswipeadapter; import com.akakce.market.models.productlist; import com.akakce.market.managers.sharedprefmanager; import com.akakce.market.models.product; import com.akakce.market.r; import com.akakce.market.utils.gifmovieview;  import java.util.list;  /**  * created cuneyt on 1.7.2015.  */ public class productslistadapter extends baseswipeadapter {      context mcontext;     list<product> list;     productlist currentlist;     boolean lineisclose = true;     public productslistadapter(context context, productlist currentlist) {         this.mcontext = context;         this.currentlist = currentlist;         this.list = currentlist.getproducts();      }      @override     public int getswipelayoutresourceid(int i) {         return r.id.swipe;     }      @override     public view generateview(final int position, viewgroup viewgroup) {         view v = layoutinflater.from(mcontext).inflate(r.layout.item_products_list, null);           return v;     }      @override     public void fillvalues(final int position, view convertview) {         product temp = list.get(position);         final textview name = (textview) convertview.findviewbyid(r.id.name);         final textview count = (textview) convertview.findviewbyid(r.id.count);         final imageview categoryview = (imageview) convertview.findviewbyid(r.id.imageview_category);         final gifmovieview gifmovieview = (gifmovieview) convertview.findviewbyid(r.id.gif_1);         final swipelayout swipelayout = (swipelayout) convertview.findviewbyid(getswipelayoutresourceid(position));         swipelayout.getdragedgemap().clear();         swipelayout.adddrag(swipelayout.dragedge.left, swipelayout.findviewbyid(r.id.bottom_wrapper));         swipelayout.addswipelistener(new swipelayout.swipelistener() {             @override             public void onstartopen(swipelayout swipelayout) {                 lineisclose = false;             }              @override             public void onopen(swipelayout swipelayout) {                  lineisclose = false;             }              @override             public void onstartclose(swipelayout swipelayout) {                 lineisclose = false;             }              @override             public void onclose(swipelayout swipelayout) {                 lineisclose  = true ;             }              @override             public void onupdate(swipelayout swipelayout, int i, int i1) {             }              @override             public void onhandrelease(swipelayout swipelayout, float v, float v1) {             }         });          if (temp.iscompleted()) {             name.settextcolor(mcontext.getresources().getcolor(r.color.gray));             name.setpaintflags(name.getpaintflags() | paint.strike_thru_text_flag);             count.setpaintflags(count.getpaintflags() | paint.strike_thru_text_flag);         } else {             name.settextcolor(mcontext.getresources().getcolor(r.color.black));             name.setpaintflags(name.getpaintflags() & (~paint.strike_thru_text_flag));             count.setpaintflags(count.getpaintflags() & (~paint.strike_thru_text_flag));         }         name.settext(temp.getname());         count.settext("" + temp.getcount());           if (position % 2 == 0)// oylesine var             categoryview.setbackgroundcolor(color.blue);         if (position % 3 == 0)             categoryview.setbackgroundcolor(color.red);          convertview.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view v) {                  if ( lineisclose ){                     gifmovieview.setvisibility(view.visible);                 final handler handler = new handler();                 handler.postdelayed(new runnable() {                     @override                     public void run() {                         gifmovieview.setvisibility(view.gone);                         if (!list.get(position).iscompleted()) {//false ise true yap                              list.get(position).setcompleted(true);                             name.settextcolor(mcontext.getresources().getcolor(r.color.gray));                             name.setpaintflags(name.getpaintflags() | paint.strike_thru_text_flag);                             count.setpaintflags(count.getpaintflags() | paint.strike_thru_text_flag);                          } else { // true ise false yap                              list.get(position).setcompleted(false);                             name.settextcolor(mcontext.getresources().getcolor(r.color.black));                             name.setpaintflags(name.getpaintflags() & (~paint.strike_thru_text_flag));                             count.setpaintflags(count.getpaintflags() & (~paint.strike_thru_text_flag));                          }                          currentlist.setproducts(list);                         sharedprefmanager.savelist(currentlist);                     }                 }, 600);                  //savelist(gifmovieview);             }         }     });         convertview.findviewbyid(r.id.bottom_wrapper).setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 swipelayout.close();                 //                 // removefromlist(position);                 list.remove(position);                 notifydatasetchanged();             }         });      }      @override     public int getcount() {         return list.size();     }      @override     public object getitem(int position) {         return list.get(position);     }      @override     public long getitemid(int position) {         return position;     } } 

i have same problem , resolved code :

viewholder.swipelayout.addswipelistener(new simpleswipelistener() {         @override         public void onopen(swipelayout layout) {              super.onopen(layout);            ((fragment)mfragment).setlistviewclickable(false);         }          @override         public void onclose(swipelayout layout) {              super.onclose(layout);             mhandler.postdelayed(new runnable() {                 @override                 public void run() {                     ((fragment) mfragment).setlistviewclickable(true);                 }             } , 100);          }          @override         public void onstartopen(swipelayout layout) {             ((fragment)mfragment).setlistviewclickable(false);             super.onstartopen(layout);           }          @override         public void onstartclose(swipelayout layout) {              ((fragment)mfragment).setlistviewclickable(false);             super.onstartclose(layout);         }     }); 

generally when swipe layout open disable listview click , when swipe layout close enable listview click after time 100 ms.


Comments