Android开发Android开发Android开发经验谈

Android 自定义接口

2017-09-13  本文已影响450人  Silence潇湘夜雨

前提

1、各位看官大家好,小可今天又来装,啊呸,又来写干货来了。在自定义Android接口之前先要搞清楚什么是接口
2、接口定义

首先

  public interface OnItemClickListener {
    //第一个参数是适配器的item,第二个参数是位置
    - 短按事件
   void OnItemClick(View view,int position);
      长按事件
   void OnItemLongClick(View view,int position);
 }

其次

  public class CustomAdapter extends RecyclerView.Adapter
    <CustomAdapter.CustomViewHolder> {

   private List<CustomBean> mList;
   private Context mContext;
   private LayoutInflater mInflater;
   private OnItemClickListener mOnItemClickListener;

public CustomAdapter(List<CustomBean> mList, Context context) {
    this.mList = mList;
    this.mContext = context;
    this.mInflater = LayoutInflater.from(mContext);
}

@Override
public CustomViewHolder onCreateViewHolder(ViewGroup 
parent, int viewType) {
    View view = mInflater.inflate(R.layout.item_custom_layout, 
parent, false);
    CustomViewHolder viewHolder = new CustomViewHolder(view);
    return viewHolder;
}

@Override
public void onBindViewHolder( CustomViewHolder holder, int position) {
    holder.mTxtItemTitle.setText(mList.get(position).getTitle());
    holder.mTxtItemContent.setText(mList.get(position).getContent());
    //设置点击事件
   setUIEvent(holder);
}

@Override
public int getItemCount() {
    return mList==null?0:mList.size();
}

class CustomViewHolder extends RecyclerView.ViewHolder {

    TextView mTxtItemTitle, mTxtItemContent;

    public CustomViewHolder(View itemView) {
        super(itemView);
        mTxtItemTitle = itemView.findViewById(R.id.txt_item_title);
        mTxtItemContent = itemView.findViewById(R.id.txt_item_content);
    }
}

/**
 * 设置点击事件
 * @param holder
 */
public void setUIEvent(final CustomViewHolder holder){
    //点击事假,首先判断是否为空,不为空的时候再进行操作
    if (mOnItemClickListener != null) {
        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int layoutPosition = holder.getLayoutPosition();
                mOnItemClickListener.OnItemClick(holder.itemView, layoutPosition);
            }
        });
        holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                int layoutPosition = holder.getLayoutPosition();
                mOnItemClickListener.OnItemLongClick(holder.itemView, layoutPosition);
                return false;
            }
        });
    }
}

/**
 * 提供给Activity或者Fragment调用的
 *
 * @param onItemClickListener
 */
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
    this.mOnItemClickListener = onItemClickListener;
}
 }

在适配器里面对接口的调用已经很清晰明了了,相信各位看官已经看懂了吧。

再次

适配器图.png

最后

上一篇 下一篇

猜你喜欢

热点阅读