加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 长按不适用于ListView

发布时间:2020-12-15 05:10:47 所属栏目:Java 来源:网络整理
导读:我正在尝试为ListView设置长按侦听器: final ListView gallery=(ListView)findViewById(R.id.dialogViewImagesList);gallery.setLongClickable(true);gallery.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(Vi
我正在尝试为ListView设置长按侦听器:

final ListView gallery=(ListView)findViewById(R.id.dialogViewImagesList);
gallery.setLongClickable(true);
gallery.setOnLongClickListener(new OnLongClickListener() {

    @Override
    public boolean onLongClick(View arg0) {
        Log.e("event","long");
        return true;
    }

});
gallery.setAdapter(new PointImagesAdapter(bitmaps));

这是我的适配器:

private class PointImagesAdapter extends ArrayAdapter<Bitmap> {

    private static final int LAYOUT_ID=R.layout.adapter_point_images;
    private List<Bitmap> bitmaps;

    private LayoutInflater inflater;

    public PointImagesAdapter(List<Bitmap> bitmaps) {
        super(MainActivity.this,LAYOUT_ID,bitmaps);
        this.bitmaps=bitmaps;
        inflater=LayoutInflater.from(MainActivity.this);
    }

    @Override
    public View getView(int position,View view,ViewGroup group) {
        if (view==null) {
            view=inflater.inflate(LAYOUT_ID,null);
        }

        ImageView i=(ImageView)view.findViewById(R.id.adapterPointImagesItem);
        i.setScaleType(ImageView.ScaleType.CENTER);
        i.setImageBitmap(bitmaps.get(position));

        view.setFocusable(false);
        return view;
    }
}

我尝试过设置view.setLongClickable(true),但在这种情况下,ListView项目不可点击(简单点击不起作用).它是适配器的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusable="false"
    android:orientation="vertical" >

    <ImageView
        android:focusable="false"
        android:layout_gravity="center"
        android:layout_marginTop="5dip"
        android:id="@+id/adapterPointImagesItem"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

我不明白为什么这段代码不起作用!我该如何解决?

解决方法

您必须使用setOnItemLongClickListener

gallery.setOnItemLongClickListener(new OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> arg0,View arg1,final int arg2,long arg3) {

    });
}

另外,如果listview的适配器从BaseAdapter扩展,那么你还需要设置convertView.setLongClickable(true);在getView()中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读