难道possile设置一些项目在Android的ListView GridView的或无法点击? [英] Is it possile to set some item unclickable in ListView or GridView on Android?

查看:151
本文介绍了难道possile设置一些项目在Android的ListView GridView的或无法点击?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

它是possile设置一些项目在Android的ListView GridView的或无法点击?结果
例如,如果用户点击项0,我想设置项目1无法点击。结果
但是,如果在onItemClick方法处理,它仍然可以通过单击并改变颜色。结果
我想这不可能是点击意味着产品Click却又无可奈何。结果
我的code如下:

Is it possile to set some item unclickable in ListView or GridView on Android?
For example, if user click item 0, I want to set item 1 cannot be click.
But if handle in onItemClick method, it still can click and change color.
I want it cannot be click means item click but do nothing.
My code as below:

GridView gv = (GridView)findViewById(R.id.gv);
gv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        if(position == 0) {
            //set item 1 unclickable
        }
    }
});
ListView lv = (ListView)findViewById(R.id.lv);
lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        if(position == 0) {
            //set item 1 unclickable
        }
    }
});

我该如何设置呢?

How can I set it?

推荐答案

有一个问题你想要达到的目标。如果 - 例如 - 要禁用该项目不是当前在的ListView可见,因为用户拥有更小的屏幕,它不适合的尺寸的ListView ,这个项目还没有任何查看分配给它。这意味着,你不能真正使这个项目无法点击,因为它不存在。

There is one problem with what you want to achieve. If - for example - the item that you want to disable is not currently visible in ListView because user have smaller screen and it doesn't fit the size of ListView, this item doesn't yet have any View assigned to it. This means that you can't really make this item not clickable, because it doesn't exist.

解决方案,它AvadhaniŸ贴是错误的,因为它使你刚刚点击不可点击的项目,要变更其他项目。

Solution which Avadhani Y posted is wrong, because it makes the item that you just clicked not clickable and you want to alter another item.

你想要什么,然后是创建自己的适配器的ListView (如果你还没有使用自适配器),并覆盖 getView()的方法,如:

What you want then is to create your own Adapter for ListView (if you don't yet use your custom Adapter) and override getView() method, like this:

public class MyAdapter extends ArrayAdapter<String> {
    private List<String> items;
    public boolean itemAtPos0Clicked = false;

    public MyAdapter(Context context, int textViewResourceId) {
        super(context, textViewResourceId);
    }

    public MyAdapter(Context context, int resource, List<String> items) {
        super(context, resource, items);
        this.items = items;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(position == 1 && itemAtPos0Clicked) {
            convertView.setClickable(false);
        }

        return convertView;
    }
}

和您的 OnItemClickListener 的ListView 应该是这样的:

And your OnItemClickListener for ListView should look like this:

final ListView lv = (ListView)findViewById(R.id.listView1);
lv.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        if((position == 0) && (lv.getFirstVisiblePosition() == 0)) {
            ((MyAdapter)lv.getAdapter()).itemAtPos0Clicked = true;
            ((MyAdapter)lv.getAdapter()).notifyDataSetChanged();
        }
    }
});

我没有测试它或任何东西,所以你可能会修正一​​些错误。

I didn't test it or anything, so you will probably have to fix few errors.

这篇关于难道possile设置一些项目在Android的ListView GridView的或无法点击?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆