Skip to content

Commit

Permalink
fix item long click bug
Browse files Browse the repository at this point in the history
  • Loading branch information
AllenCoder committed Mar 22, 2017
1 parent 21d3bf0 commit 42a6241
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@
import java.util.ArrayList;
import java.util.List;

import static android.R.attr.data;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;

Expand Down Expand Up @@ -801,16 +800,16 @@ private void bindViewClickListener(final BaseViewHolder baseViewHolder) {
public void onClick(View v) {
if (getOnItemClickListener() != null&&baseViewHolder!=null) {

getOnItemClickListener().onItemClick(BaseQuickAdapter.this, view, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount());
getOnItemClickListener().onItemClick(BaseQuickAdapter.this, v, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount());
}

}
});
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (getOnItemChildClickListener() != null&&baseViewHolder!=null) {
return getOnItemLongClickListener().onItemLongClick(BaseQuickAdapter.this, view, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount());
if (getOnItemLongClickListener() != null&&baseViewHolder!=null) {
return getOnItemLongClickListener().onItemLongClick(BaseQuickAdapter.this, v, baseViewHolder.getLayoutPosition() - getHeaderLayoutCount());
}
return false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ public BaseViewHolder(final View view) {
}

private int getClickPosition() {
return getLayoutPosition()-adapter.getHeaderLayoutCount();
return getLayoutPosition() - adapter.getHeaderLayoutCount();
}

public HashSet<Integer> getItemChildLongClickViewIds() {
Expand Down Expand Up @@ -327,6 +327,7 @@ public BaseViewHolder setRating(int viewId, float rating, int max) {

/**
* Sets the on click listener of the view.
*
* @param viewId The view id.
* @param listener The on click listener;
* @return The BaseViewHolder for chaining.
Expand All @@ -340,36 +341,38 @@ public BaseViewHolder setOnClickListener(int viewId, View.OnClickListener listen

/**
* add childView id
*
* @param viewId add the child view id can support childview click
* @return
* if you use adapter bind listener
* @return if you use adapter bind listener
* @link {(adapter.setOnItemChildClickListener(listener))}
*
* <p>
* or if you can use recyclerView.addOnItemTouch(listerer) wo also support this menthod
*/

public BaseViewHolder addOnClickListener(final int viewId) {
childClickViewIds.add(viewId);
final View view = getView(viewId);
if (view!=null){
if (!view.isClickable()) {
view.setClickable(true);
}
if (view != null) {
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (adapter.getOnItemChildClickListener() != null) {
adapter.getOnItemChildClickListener().onItemChildClick(adapter, view, getClickPosition());
adapter.getOnItemChildClickListener().onItemChildClick(adapter, v, getClickPosition());
}
}
});
}
if (!view.isClickable()) {
view.setClickable(true);
}

return this;
}


/**
* set nestview id
*
* @param viewId add the child view id can support childview click
* @return
*/
Expand All @@ -382,30 +385,31 @@ public BaseViewHolder setNestView(int viewId) {

/**
* add long click view id
*
* @param viewId
* @return
* if you use adapter bind listener
* @return if you use adapter bind listener
* @link {(adapter.setOnItemChildLongClickListener(listener))}
*
* <p>
* or if you can use recyclerView.addOnItemTouch(listerer) wo also support this menthod
*/
public BaseViewHolder addOnLongClickListener(final int viewId) {
itemChildLongClickViewIds.add(viewId);
final View view = getView(viewId);
if (view!=null){
if (!view.isLongClickable()) {
view.setLongClickable(true);
}
if (view != null) {
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (adapter.getmOnItemChildLongClickListener() != null) {
adapter.getmOnItemChildLongClickListener().onItemChildLongClick(adapter, view, getClickPosition());
adapter.getmOnItemChildLongClickListener().onItemChildLongClick(adapter, v, getClickPosition());
}
return false;
}
});
}
if (!view.isLongClickable()) {
view.setLongClickable(true);
}

return this;
}

Expand Down

0 comments on commit 42a6241

Please sign in to comment.