难道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.