2016-06-20 4 views
-1

Ich arbeite an RecyclerViewonItemClick und onItemLongClick, beide arbeiten gut, aber das Problem ist, dass onItemLongClick auch onItemClick nennt.recycleview onLongclick ruft automatisch onClick

Hier ist mein Adapter Code:

package Adaptor; 

import android.annotation.SuppressLint; 
import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

import com.wings.example.recycleview.MainActivity; 
import com.wings.example.recycleview.R; 

import java.util.ArrayList; 

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


Context context; 
private ArrayList<String> arrayList; 
private static onClickListner onclicklistner; 

public SampleAdapter(Context context) { 
    this.context = context; 
    arrayList = MainActivity.arrayList; 
} 

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener { 

    TextView txt_pos; 
    SampleAdapter sampleAdapter; 

    public ViewHolder(View itemView, SampleAdapter sampleAdapter) { 
     super(itemView); 

     itemView.setOnClickListener(this); 
     itemView.setOnLongClickListener(this); 

     txt_pos = (TextView) itemView.findViewById(R.id.txt_pos); 
     this.sampleAdapter = sampleAdapter; 

     itemView.setOnClickListener(this); 
    } 


    @Override 
    public void onClick(View v) { 
     onclicklistner.onItemClick(getAdapterPosition(), v); 
    } 

    @Override 
    public boolean onLongClick(View v) { 
     onclicklistner.onItemLongClick(getAdapterPosition(), v); 
     return false; 
    } 
} 

public void setOnItemClickListener(onClickListner onclicklistner) { 
    SampleAdapter.onclicklistner = onclicklistner; 
} 

public interface onClickListner { 
    void onItemClick(int position, View v); 
    void onItemLongClick(int position, View v); 
} 



@Override 
public int getItemCount() { 

    return arrayList.size(); 

} 

@Override 
public int getItemViewType(int position) { 
    return position; 
} 

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int position) { 
    viewHolder.txt_pos.setText(arrayList.get(position)); 
} 

@SuppressLint("InflateParams") 
@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) { 
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_recycler_row_sample, viewGroup, false); 
    return new ViewHolder(view, this); 
} 

} 

Und ich es genannt werden:

sampleAdapter.setOnItemClickListener(new SampleAdapter.onClickListner() { 
     @Override 
     public void onItemClick(int position, View v) { 
      Log.e(TAG+"ON ITEM CLICK", position + ""); 

     } 

     @Override 
     public void onItemLongClick(int position, View v) { 
      Log.e(TAG + "ON ITEM LONG CLICK", position + ""); 

     } 
    }); 

Und ich habe auch versucht, aber gleiche Problem gibt es: Little robots's onitemclick code

Jede Hilfe würde sehr geschätzt werden.

+0

versuchen 'return true;' statt 'return false;' in 'onLongClick' listner –

+0

Ja, die Danke @AbhishekPatel –

+0

Danke für die Erwähnung @ Mike –

Antwort

4

Rückkehr wahr wird dem System Ich habe mit dem Ereignis, dass Sie sich nicht sorgen müssen sich selbst chillen sonst Onclick wird feuern.

@Override 
    public boolean onLongClick(View v) { 
     onclicklistner.onItemLongClick(getAdapterPosition(), v); 
     return true; 
    } 
+0

@Sohail zahid arbeitet. –

+0

@ Smit.Satodia Sie sind willkommen. –

Verwandte Themen