java接口回调

Java接口回调在adapter和事件监听中发挥关键作用。通过定义接口,由Activity实现并处理点击事件,adapter则利用接口对象进行交互。回调机制包括定义接口、注册回调引用和在特定条件下调用接口方法来响应事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java中的接口回调比较简单,但是很重要,也很实用。它经常运用于各种adapter中,可以监听adapter中的点击事件,也运用于很多其他的需要监听某些事件的场合。
稍微举一个小例子,展示一下接口回调在adapter中的应用。
1)先定义一个接口

public interface OnItemClickListener {
    void onItemClick(int position,View view);
}

2)activity实现这个接口,并覆写其中的方法(用于处理点击事件)

public class CallbackActivity extends Activity implements OnItemClickListener {
    private ListView mListView;
    private CallbackAdapter mCallbackAdapter;
    private ArrayList<String> mArrayList = new ArrayList<>();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_call_back);
        mArrayList.add("harry");
        mArrayList.add("mike");
        mArrayList.add("lucy");
        mListView = (ListView) findViewById(R.id.lsv);
        mCallbackAdapter = new CallbackAdapter(CallbackActivity.this, mArrayList, CallbackActivity.this);
        mListView.setAdapter(mCallbackAdapter);
    }

    @Override
    public void onItemClick(int position, View view) {
        Toast.makeText(CallbackActivity.this, "点击了第 " + position + " 项", Toast.LENGTH_SHORT).show();
    }
}

写得随意了点,领会要旨即可。
3)adapter中使用接口对象

public class CallbackAdapter extends BaseAdapter {
    private Context mContext;
    private ArrayList<String> mList;
    private LayoutInflater mLayoutInflater;
    private OnItemClickListener mOnItemClickListener;

    public CallbackAdapter(Context context, ArrayList<String> list, OnItemClickListener onItemClickListener) {
        this.mContext = context;
        this.mList = list;
        this.mOnItemClickListener = onItemClickListener;
        this.mLayoutInflater = LayoutInflater.from(context);
    }

    public final class ViewHolder {
        TextView mTittle;
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int i) {
        return mList.get(i);
    }

    @Override
    public long getItemId(int i) {
        return i;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup viewGroup) {
        final ViewHolder viewHolder;
        if (convertView == null) {
            viewHolder = new ViewHolder();
            convertView = mLayoutInflater.inflate(R.layout.item_callback, null);
            viewHolder.mTittle = (TextView) convertView.findViewById(R.id.tv_tittle);
            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        viewHolder.mTittle.setText(mList.get(position));
        viewHolder.mTittle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mOnItemClickListener.onItemClick(position,view);
            }
        });
        return convertView;
    }
}

总结:接口回调的机制与回调函数的机制类似:
(1)定义一个接口;
(2)提供接口实现的一方在初始化的时候,将接口回调的引用注册给调用者;
(3)条件发生时,调用者使用引用调用实现的接口方法对事件进行处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值