Skip to content

Commit

Permalink
feat: 实现点击事件
Browse files Browse the repository at this point in the history
  • Loading branch information
limuyang2 committed Jul 15, 2022
1 parent da32b5a commit dbe23d1
Show file tree
Hide file tree
Showing 14 changed files with 127 additions and 324 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.widget.CompoundButton;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
Expand All @@ -14,10 +13,7 @@
import com.chad.baserecyclerviewadapterhelper.adapter.AnimationAdapter;
import com.chad.baserecyclerviewadapterhelper.animator.CustomAnimation1;
import com.chad.baserecyclerviewadapterhelper.animator.CustomAnimation2;
import com.chad.baserecyclerviewadapterhelper.entity.Status;
import com.chad.baserecyclerviewadapterhelper.utils.Tips;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemChildClickListener;
import com.jaredrummler.materialspinner.MaterialSpinner;
import com.kyleduo.switchbutton.SwitchButton;

Expand Down Expand Up @@ -55,30 +51,7 @@ public void onClick(final View v) {
private void initAdapter() {
mAnimationAdapter = new AnimationAdapter();
mAnimationAdapter.setAnimationEnable(true);
int mFirstPageItemCount = 3;
// mAnimationAdapter.setNotDoAnimationCount(mFirstPageItemCount);
mAnimationAdapter.addChildClickViewIds(R.id.img, R.id.tweetName, R.id.tweetText);
mAnimationAdapter.setOnItemChildClickListener(new OnItemChildClickListener() {
@Override
public void onItemChildClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
String content = null;
Status status = (Status) adapter.getItem(position);
switch (view.getId()) {
case R.id.img:
content = "img:" + status.getUserAvatar();
break;
case R.id.tweetName:
content = "name:" + status.getUserName();
break;
case R.id.tweetText:
content = "tweetText:" + status.getUserName();
break;
default:
break;
}
Tips.show(content);
}
});

mRecyclerView.setAdapter(mAnimationAdapter);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.chad.baserecyclerviewadapterhelper.activity;

import android.os.Bundle;
import android.view.View;

import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
Expand All @@ -11,8 +10,6 @@
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
import com.chad.baserecyclerviewadapterhelper.entity.Movie;
import com.chad.baserecyclerviewadapterhelper.utils.Tips;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemClickListener;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -48,12 +45,7 @@ protected void onCreate(Bundle savedInstanceState) {
// adapter.addHeaderView(view);

//item 点击事件
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Tips.show("onItemClick: " + position);
}
});
adapter.setOnItemClickListener((adapter, view, position) -> Tips.show("onItemClick: " + position));

//设置数据
adapter.setList(genData());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
import com.chad.baserecyclerviewadapterhelper.adapter.HeaderAndFooterAdapter;
import com.chad.baserecyclerviewadapterhelper.base.BaseActivity;
import com.chad.baserecyclerviewadapterhelper.data.DataServer;
import com.chad.baserecyclerviewadapterhelper.entity.Status;
import com.chad.baserecyclerviewadapterhelper.utils.Tips;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.QuickAdapterHelper;
import com.chad.library.adapter.base.listener.OnItemClickListener;

/**
* https://github.com/CymChad/BaseRecyclerViewAdapterHelper
Expand All @@ -38,10 +38,10 @@ protected void onCreate(Bundle savedInstanceState) {

HeaderAndFooterAdapter adapter1 = new HeaderAndFooterAdapter(DataServer.getSampleData(PAGE_SIZE));
adapter1.setAnimationEnable(true);
adapter1.setOnItemClickListener(new OnItemClickListener() {
adapter1.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener<Status>() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
Tips.show(String.valueOf(position));
public void onItemClick(@NonNull BaseQuickAdapter<Status, ?> adapter, @NonNull View view, int position) {
Tips.show("position: " + position);
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,15 @@ package com.chad.baserecyclerviewadapterhelper.activity

import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import com.chad.baserecyclerviewadapterhelper.R
import com.chad.baserecyclerviewadapterhelper.adapter.HomeAdapter
import com.chad.baserecyclerviewadapterhelper.adapter.HomeTopHeaderAdapter
import com.chad.baserecyclerviewadapterhelper.databinding.ActivityHomeBinding
import com.chad.baserecyclerviewadapterhelper.entity.HomeEntity
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.QuickAdapterHelper
import com.chad.library.adapter.base.listener.OnItemClickListener

class HomeActivity : AppCompatActivity(), OnItemClickListener {
class HomeActivity : AppCompatActivity() {

private lateinit var binding: ActivityHomeBinding

Expand All @@ -23,7 +20,6 @@ class HomeActivity : AppCompatActivity(), OnItemClickListener {
private val homeAdapter by lazy(LazyThreadSafetyMode.NONE) {
HomeAdapter(homeItemData).apply {
animationEnable = true
setOnItemClickListener(this@HomeActivity)
}
}

Expand All @@ -40,16 +36,13 @@ class HomeActivity : AppCompatActivity(), OnItemClickListener {

// 从 QuickAdapterHelper 获取 adapter,设置给 RecycleView
binding.recyclerView.adapter = helper.adapter
}

/**
* 实现的 OnItemClickListener 接口
* item 点击事件
*/
override fun onItemClick(adapter: BaseQuickAdapter<*, *>, view: View, position: Int) {
val item = adapter.items[position] as HomeEntity
if (!item.isSection) {
startActivity(Intent(this@HomeActivity, item.activity))
// item 点击事件
homeAdapter.setOnItemClickListener { adapter, _, position ->
val item = adapter.items[position]
if (!item.isSection) {
startActivity(Intent(this@HomeActivity, item.activity))
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,6 @@
import com.chad.baserecyclerviewadapterhelper.entity.ClickEntity;
import com.chad.baserecyclerviewadapterhelper.utils.Tips;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemChildClickListener;
import com.chad.library.adapter.base.listener.OnItemChildLongClickListener;
import com.chad.library.adapter.base.listener.OnItemClickListener;
import com.chad.library.adapter.base.listener.OnItemLongClickListener;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -41,33 +37,52 @@ protected void onCreate(Bundle savedInstanceState) {
mRecyclerView = findViewById(R.id.rv);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
initAdapter();
adapter.setOnItemClickListener(new OnItemClickListener() {

// 设置点击事件
adapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener<ClickEntity>() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
public void onItemClick(@NonNull BaseQuickAdapter<ClickEntity, ?> adapter, @NonNull View view, int position) {
Tips.show("onItemClick " + position);
}
});
adapter.setOnItemLongClickListener(new OnItemLongClickListener() {

// 设置item 长按事件
adapter.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener<ClickEntity>() {
@Override
public boolean onItemLongClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
public boolean onItemLongClick(@NonNull BaseQuickAdapter<ClickEntity, ?> adapter, @NonNull View view, int position) {
Tips.show("onItemLongClick " + position);
return true;
}
});
adapter.setOnItemChildClickListener(new OnItemChildClickListener() {

// 添加子 view 的点击事件
adapter.addOnItemChildClickListener(R.id.btn, new BaseQuickAdapter.OnItemChildClickListener<ClickEntity>() {
@Override
public void onItemChildClick(@NonNull BaseQuickAdapter<ClickEntity, ?> adapter, @NonNull View view, int position) {
Tips.show("onItemChildClick: " + position);
}
});
adapter.addOnItemChildClickListener(R.id.iv_num_reduce, new BaseQuickAdapter.OnItemChildClickListener<ClickEntity>() {
@Override
public void onItemChildClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
Tips.show("onItemChildClick " + position);
public void onItemChildClick(@NonNull BaseQuickAdapter<ClickEntity, ?> adapter, @NonNull View view, int position) {
Tips.show("onItemChildClick: reduce " + position);
}
});
adapter.setOnItemChildLongClickListener(new OnItemChildLongClickListener() {
adapter.addOnItemChildClickListener(R.id.iv_num_add, new BaseQuickAdapter.OnItemChildClickListener<ClickEntity>() {
@Override
public boolean onItemChildLongClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
public void onItemChildClick(@NonNull BaseQuickAdapter<ClickEntity, ?> adapter, @NonNull View view, int position) {
Tips.show("onItemChildClick: add " + position);
}
});

// 设置子 view 长按事件
adapter.addOnItemChildLongClickListener(R.id.btn_long, new BaseQuickAdapter.OnItemChildLongClickListener<ClickEntity>() {
@Override
public boolean onItemChildLongClick(@NonNull BaseQuickAdapter<ClickEntity, ?> adapter, @NonNull View view, int position) {
Tips.show("onItemChildLongClick " + position);
return true;
}
});

}

private void initAdapter() {
Expand All @@ -76,7 +91,6 @@ private void initAdapter() {
data.add(new ClickEntity(ClickEntity.CLICK_ITEM_CHILD_VIEW));
data.add(new ClickEntity(ClickEntity.LONG_CLICK_ITEM_VIEW));
data.add(new ClickEntity(ClickEntity.LONG_CLICK_ITEM_CHILD_VIEW));
data.add(new ClickEntity(ClickEntity.NEST_CLICK_ITEM_CHILD_VIEW));
adapter = new ItemClickAdapter(data);
adapter.setAnimationEnable(true);
mRecyclerView.setAdapter(adapter);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,25 @@

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.chad.baserecyclerviewadapterhelper.R;
import com.chad.baserecyclerviewadapterhelper.databinding.ItemClickChildviewBinding;
import com.chad.baserecyclerviewadapterhelper.databinding.ItemClickViewBinding;
import com.chad.baserecyclerviewadapterhelper.databinding.ItemLongClickChildviewBinding;
import com.chad.baserecyclerviewadapterhelper.databinding.ItemLongClickViewBinding;
import com.chad.baserecyclerviewadapterhelper.databinding.ItemNestClickBinding;
import com.chad.baserecyclerviewadapterhelper.entity.ClickEntity;
import com.chad.baserecyclerviewadapterhelper.utils.Tips;
import com.chad.library.adapter.base.BaseMultiItemQuickAdapter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.chad.library.adapter.base.listener.OnItemChildClickListener;
import com.chad.library.adapter.base.listener.OnItemClickListener;

import java.util.List;

/**
*
*/
public class ItemClickAdapter extends BaseMultiItemQuickAdapter<ClickEntity> implements OnItemClickListener, OnItemChildClickListener {

private static final int ITEM_TYPE = 0;
private static final int SECTION_TYPE = 1;
public class ItemClickAdapter extends BaseMultiItemQuickAdapter<ClickEntity> {

static class ItemViewVH extends RecyclerView.ViewHolder {

Expand Down Expand Up @@ -89,19 +78,6 @@ public ItemChildLongClickVH(@NonNull ViewGroup parent) {
}
}

static class NestChildClickVH extends RecyclerView.ViewHolder {

ItemNestClickBinding viewBinding;

public NestChildClickVH(@NonNull ItemNestClickBinding viewBinding) {
super(viewBinding.getRoot());
this.viewBinding = viewBinding;
}

public NestChildClickVH(@NonNull ViewGroup parent) {
this(ItemNestClickBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false));
}
}

public ItemClickAdapter(List<ClickEntity> data) {
super(data);
Expand Down Expand Up @@ -155,29 +131,6 @@ public ItemChildLongClickVH onCreate(@NonNull Context context, @NonNull ViewGrou
@Override
public void onBind(@NonNull ItemChildLongClickVH holder, int position, ClickEntity item) {
}
}).addItemType(ClickEntity.NEST_CLICK_ITEM_CHILD_VIEW, NestChildClickVH.class, new OnViewHolderListener<ClickEntity, NestChildClickVH>() {

@NonNull
@Override
public NestChildClickVH onCreate(@NonNull Context context, @NonNull ViewGroup parent, int viewType) {
return new NestChildClickVH(parent);
}

@Override
public void onBind(@NonNull NestChildClickVH holder, int position, ClickEntity item) {
RecyclerView recyclerView = holder.viewBinding.nestList;
recyclerView.setHasFixedSize(true);

if (recyclerView.getLayoutManager() == null) {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
}
if (recyclerView.getAdapter() == null) {
NestAdapter nestAdapter = new NestAdapter();
nestAdapter.setOnItemClickListener(ItemClickAdapter.this);
nestAdapter.setOnItemChildClickListener(ItemClickAdapter.this);
recyclerView.setAdapter(nestAdapter);
}
}
}).onItemViewType(new OnItemViewTypeListener<ClickEntity>() {
@Override
public int onItemViewType(int position, @NonNull List<? extends ClickEntity> list) {
Expand All @@ -186,55 +139,13 @@ public int onItemViewType(int position, @NonNull List<? extends ClickEntity> lis
});


addChildClickViewIds(R.id.btn,
R.id.iv_num_reduce, R.id.iv_num_add,
R.id.item_click);
// addChildClickViewIds(R.id.btn,
// R.id.iv_num_reduce, R.id.iv_num_add,
// R.id.item_click);

addChildLongClickViewIds(R.id.iv_num_reduce, R.id.iv_num_add,
R.id.btn);
R.id.btn_long);
}


// @Override
protected void convert(@NonNull final BaseViewHolder helper, final ClickEntity item) {
switch (helper.getItemViewType()) {
case ClickEntity.CLICK_ITEM_VIEW:
break;
case ClickEntity.CLICK_ITEM_CHILD_VIEW:
// set img data
break;
case ClickEntity.LONG_CLICK_ITEM_VIEW:
break;
case ClickEntity.LONG_CLICK_ITEM_CHILD_VIEW:
break;
case ClickEntity.NEST_CLICK_ITEM_CHILD_VIEW:
// u can set nestview id
RecyclerView recyclerView = helper.getView(R.id.nest_list);
recyclerView.setHasFixedSize(true);

if (recyclerView.getLayoutManager() == null) {
recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false));
}
if (recyclerView.getAdapter() == null) {
NestAdapter nestAdapter = new NestAdapter();
nestAdapter.setOnItemClickListener(this);
nestAdapter.setOnItemChildClickListener(this);
recyclerView.setAdapter(nestAdapter);
}

break;
default:
break;
}
}

@Override
public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) {
Tips.show("childView click");
}

@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
Tips.show("嵌套RecycleView item 收到: " + "点击了第 " + position + " 一次");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public class ClickEntity implements MultiItemEntity {
public static final int CLICK_ITEM_CHILD_VIEW = 2;
public static final int LONG_CLICK_ITEM_VIEW = 3;
public static final int LONG_CLICK_ITEM_CHILD_VIEW = 4;
public static final int NEST_CLICK_ITEM_CHILD_VIEW = 5;
private final int type;

public ClickEntity(final int type) {
Expand Down
Loading

0 comments on commit dbe23d1

Please sign in to comment.