Android: deslizar el elemento de la lista causa clickOnItem

Quiero deslizar el elemento de mi listview a derecha e izquierda. Para ello utilizo este proyecto.

https://github.com/daimajia/AndroidSwipeLayout Puedo deslizar los artículos pero cuando después golpeo el artículo, el onclick del artículo llamó. No quiero esto. Hice un esfuerzo en SwipeListener pero no colud de superar esta situación totalmente. Puedo deslizar de izquierda a derecha sin llamar a onClickItem, pero cuando deslizo hacia atrás itemClick llamada

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) { } }); 

introduzca la descripción de la imagen aquí

EDIT: algún código

 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 by 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; } } 

Tengo un mismo problema y resolví esto por este código:

 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); } }); 

generalmente cuando el diseño del golpeo abierto i deshabilita el tecleo del listview y cuando el cierre del esquema del golpeo permite el tecleo del listview después de algún tiempo como 100 ms.

Tengo un mismo problema como tú. Y encontré la respuesta aquí: http://android-pratap.blogspot.com/2015/07/swipe-recyclerview-using.html

Puede configurar onClick en SurfaceView (). Y ahora, usted puede deslizar el artículo sin llamar onClickItem.

 viewHolder.swipeLayout.getSurfaceView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(mContext, " onClick : " + item.getName() + " \n" + item.getEmailId(), Toast.LENGTH_SHORT).show(); } }); 

Deberías usar

 swipeLayout.getSurfaceView().setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // delete view or something you want to do } }); 
  • Deslizar entre las actividades de android
  • Cierre una actividad pasando de derecha a izquierda con una animación suave para ir a la segunda actividad
  • ListView en la ficha de desplazamiento no se actualiza a menos que se reinicie
  • Twitter para Android como menú rápido de desplazamiento rápido
  • Implementación de 47degree android-swipelistview para desplazar android ListViewItem
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.