You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Java中ListView长按点击实现问题求助(附代码)

Android Java ListView长按获取Item位置的实现方案

方法一:使用ListView的OnItemLongClickListener(官方推荐)

这是专门为列表项长按设计的监听器,自带position参数,无需额外设置setLongClickable(true)(ListView的Item默认支持长按,除非Item布局控件抢占了点击事件)。

listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
        // 直接通过position获取对应数据,处理长按逻辑
        // 示例:YourData targetData = yourDataList.get(position);
        return true; // 返回true表示已处理事件,不会触发普通点击;返回false则会继续触发点击事件
    }
});

方法二:在自定义Adapter的getView中为单个Item设置长按监听

如果使用自定义Adapter,可在getView方法中为每个Item单独绑定长按监听,适合需要针对特定Item禁用/修改长按逻辑的场景:

public class CustomAdapter extends BaseAdapter {
    private List<YourData> dataList;
    private Context context;

    public CustomAdapter(Context context, List<YourData> dataList) {
        this.context = context;
        this.dataList = dataList;
    }

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

    @Override
    public Object getItem(int position) {
        return dataList.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = LayoutInflater.from(context).inflate(R.layout.your_item_layout, parent, false);
            holder = new ViewHolder();
            // 初始化控件:holder.itemText = convertView.findViewById(R.id.item_text);
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        // 绑定数据
        YourData data = dataList.get(position);
        // holder.itemText.setText(data.getContent());

        // 设置长按监听
        convertView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                // 直接使用当前position处理逻辑
                return true;
            }
        });

        return convertView;
    }

    static class ViewHolder {
        // 声明控件:TextView itemText;
    }
}

内容的提问来源于stack exchange,提问作者gety

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:43:10