diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/AnimationUseActivity.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/AnimationUseActivity.java index 953380429..5160d4655 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/AnimationUseActivity.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/AnimationUseActivity.java @@ -9,6 +9,7 @@ import com.chad.baserecyclerviewadapterhelper.adapter.QuickAdapter; import com.chad.baserecyclerviewadapterhelper.animation.CustomAnimation; +import com.chad.baserecyclerviewadapterhelper.entity.Status; import com.chad.library.adapter.base.BaseQuickAdapter; import com.jaredrummler.materialspinner.MaterialSpinner; @@ -33,10 +34,20 @@ protected void onCreate(Bundle savedInstanceState) { private void initAdapter() { mQuickAdapter = new QuickAdapter(this); mQuickAdapter.openLoadAnimation(); - mQuickAdapter.setOnRecyclerViewItemClickListener(new BaseQuickAdapter.OnRecyclerViewItemClickListener() { + mQuickAdapter.setOnRecyclerViewItemChildClickListener(new BaseQuickAdapter.OnRecyclerViewItemChildClickListener() { @Override - public void onItemClick(View view, int position) { - Toast.makeText(AnimationUseActivity.this, Integer.toString(position), Toast.LENGTH_LONG).show(); + public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { + String content = null; + Status status = (Status) adapter.getItem(position); + switch (view.getId()) { + case R.id.tweetAvatar: + content = "img:" + status.getUserAvatar(); + break; + case R.id.tweetName: + content = "name:" + status.getUserName(); + break; + } + Toast.makeText(AnimationUseActivity.this, content, Toast.LENGTH_LONG).show(); } }); mRecyclerView.setAdapter(mQuickAdapter); diff --git a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/QuickAdapter.java b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/QuickAdapter.java index 9082d0ff7..fa9b1f60b 100644 --- a/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/QuickAdapter.java +++ b/app/src/main/java/com/chad/baserecyclerviewadapterhelper/adapter/QuickAdapter.java @@ -25,8 +25,12 @@ protected void convert(BaseViewHolder helper, Status item) { helper.setText(R.id.tweetName, item.getUserName()) .setText(R.id.tweetText, item.getText()) .setText(R.id.tweetDate, item.getCreatedAt()) - .setImageUrl(R.id.tweetAvatar, item.getUserAvatar()) + .setImageUrl(R.id.tweetAvatar, item.getUserAvatar(), R.mipmap.ic_launcher) .setVisible(R.id.tweetRT, item.isRetweet()) + .setOnClickListener(R.id.tweetAvatar, new OnItemChildClickListener()) + .setOnClickListener(R.id.tweetName, new OnItemChildClickListener()) .linkify(R.id.tweetText); } + + } diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java index da2ef1445..53234244a 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseQuickAdapter.java @@ -116,6 +116,25 @@ public interface OnRecyclerViewItemClickListener { public void onItemClick(View view, int position); } + private OnRecyclerViewItemChildClickListener mChildClickListener; + + public void setOnRecyclerViewItemChildClickListener(OnRecyclerViewItemChildClickListener childClickListener) { + this.mChildClickListener = childClickListener; + } + + public interface OnRecyclerViewItemChildClickListener { + void onItemChildClick(BaseQuickAdapter adapter, View view, int position); + } + + public class OnItemChildClickListener implements View.OnClickListener { + public int position; + @Override + public void onClick(View v) { + if (mChildClickListener != null) + mChildClickListener.onItemChildClick(BaseQuickAdapter.this, v, position - getHeaderViewsCount()); + } + } + /** * Same as QuickAdapter#QuickAdapter(Context,int) but with @@ -151,6 +170,17 @@ public List getData() { return mData; } + /** + * Get the data item associated with the specified position in the data set. + * + * @param position Position of the item whose data we want within the adapter's + * data set. + * @return The data at the specified position. + */ + public T getItem(int position){ + return mData.get(position); + }; + public int getHeaderViewsCount() { return mHeaderView == null ? 0 : 1; } diff --git a/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java b/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java index f461030b4..85bdf0cc9 100755 --- a/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java +++ b/library/src/main/java/com/chad/library/adapter/base/BaseViewHolder.java @@ -319,6 +319,12 @@ public BaseViewHolder setOnClickListener(int viewId, View.OnClickListener listen view.setOnClickListener(listener); return this; } + public BaseViewHolder setOnClickListener(int viewId, BaseQuickAdapter.OnItemChildClickListener listener) { + View view = getView(viewId); + listener.position = getAdapterPosition(); + view.setOnClickListener(listener); + return this; + } /** * Sets the on touch listener of the view.