Skip to content

Commit

Permalink
处理点击事件不执行的问题
Browse files Browse the repository at this point in the history
  • Loading branch information
Zzhengsr committed Jan 29, 2020
1 parent e79deef commit 4bc972b
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 31 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ android {

dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
compile fileTree(include: ['*.jar'], dir: 'libs')
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

Expand Down Expand Up @@ -124,17 +126,21 @@ private void showBanner(BannerViewPager bannerViewPager, CircleIndicator indicat
bannerViewPager.setPageListener(R.layout.loop_layout, mDatas, new PageHelperListener<TestBean>() {
@Override
public void bindView(View view, final TestBean data, int position) {
setText(view, R.id.loop_text, data.msg);
setText(view, R.id.loop_text, data.msg);


//注册子控件事件
//addChildrenClick(view,R.id.item_text,position);


ImageView imageView = view.findViewById(R.id.loop_icon);
GlideApp.with(view)
.load(data.resId)
.into(imageView);
}



@Override
public void onItemClick(View view, TestBean data, int position) {
super.onItemClick(view, data, position);
Expand Down
5 changes: 4 additions & 1 deletion app/src/main/res/layout/loop_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,15 @@
android:layout_height="30dp">
<TextView
android:id="@+id/loop_text"
android:layout_width="match_parent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginLeft="8dp"
android:textSize="16sp"
android:gravity="center_vertical"
android:clickable="true"
android:textColor="@color/white"/>


</FrameLayout>


Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,31 @@
package com.zhengsr.viewpagerlib.callback;

import android.graphics.Bitmap;
import android.util.Log;
import android.util.SparseArray;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
* Created by Administrator on 2017/11/9.
*/

public abstract class PageHelperListener<T> {
private static final String TAG = "PageHelperListener";

private List<Object> mDatas;
public PageHelperListener() {
mDatas = new ArrayList<>();
}

public void setDatas(List<Object> datas){
mDatas.addAll(datas);
}

/**
* 拿到数据
Expand All @@ -25,14 +40,14 @@ public abstract class PageHelperListener<T> {
* @param childView
* @param position
*/
public void onItemChildClick(View childView,int position){}
public void onItemChildClick(View childView, T data,int position){}

/**
* 子控件长按事件
* @param childView
* @param position
*/
public boolean onItemChildLongClick(View childView,int position){
public boolean onItemChildLongClick(View childView,T data,int position){
return true;
}

Expand All @@ -47,7 +62,7 @@ public PageHelperListener addChildrenClick(View view, int viewId, final int posi
child.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onItemChildClick(child,position);
onItemChildClick(child, (T) mDatas.get(position),position);
}
});
}
Expand All @@ -64,14 +79,16 @@ public PageHelperListener addChildrenLongClick(View view, int viewId, final int
child.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return onItemChildLongClick(child,position);
return onItemChildLongClick(child, (T) mDatas.get(position),position);
}
});
}
return this;
}




/**
* 常用模板
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
Expand Down Expand Up @@ -39,7 +40,7 @@
* Created by Administrator on 2017/11/9.
*/

public class BannerViewPager extends ViewPager implements View.OnTouchListener {
public class BannerViewPager extends ViewPager {
/**
* const
*/
Expand Down Expand Up @@ -124,7 +125,6 @@ public BannerViewPager(Context context, AttributeSet attrs) {

ta.recycle();
mInflater = LayoutInflater.from(context);
setOnTouchListener(this);
ViewPagerHelperUtils.initSwitchTime(getContext(), this, mSmoothTime);

WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Expand Down Expand Up @@ -261,6 +261,7 @@ public <T> void setPageListener(int layoutId, final List<T> datas, final PageHel
}
mDatas.clear();
mDatas.addAll(datas);
listener.setDatas(mDatas);

CusViewPagerAdapter adapter = new CusViewPagerAdapter<T>(datas, layoutId, listener);
setAdapter(adapter);
Expand All @@ -276,6 +277,7 @@ public <T> void setPageListener(int layoutId, final List<T> datas, final PageHel




}


Expand All @@ -295,26 +297,6 @@ private void chooseIndicator(int count, View indicator) {
}


/**
* 当有触摸时停止
*/
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
mHandler.removeMessages(LOOP_MSG);
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
if (isAutoLoop) {
mHandler.sendEmptyMessageDelayed(LOOP_MSG, mLoopTime);
}
break;

default:
break;
}
return false;
}

/**
* 手动停止
Expand Down Expand Up @@ -427,10 +409,9 @@ public boolean onTouch(View v, MotionEvent event) {
case MotionEvent.ACTION_DOWN:
mLastTime = System.currentTimeMillis();
break;

case MotionEvent.ACTION_UP:
long time = System.currentTimeMillis() - mLastTime;
if (time > 200){
if (time < 200){
if (listener != null && mDatas.size() > 0) {
listener.onItemClick(view,mDatas.get(position),position);
}
Expand All @@ -443,6 +424,8 @@ public boolean onTouch(View v, MotionEvent event) {
return false;
}
});


}
}

Expand Down

0 comments on commit 4bc972b

Please sign in to comment.