如何检查 ListView 项是否被选中
How to check if ListView item is checked or not
我正在使用 list.setItemChecked(position, true)
将项目设置为在我的 ListView
中选中,当点击时。但是,我没有找到查看列表项是否已选中的方法。
ListView
项没有 checkbox/radio 且未使用 CheckedTextView
。 ListView
设置为 CHOICE_MODE_SINGLE
。
ListView onItemClick 监听器
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
list.setItemChecked(position, true);
}
适配器获取视图
@Override
public View getView(int position, View convertView, ViewGroup parent) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.rowlayout, parent, false);
vg = parent;
TextView textView = (TextView) rowView.findViewById(R.id.label);
textView.setText(names[position]);
TextView textView2 = (TextView) rowView.findViewById(R.id.tvValue);
textView2.setText(stock[position]);
return rowView;
}
有没有办法检查列表项是否被选中?例如,在 onItemClick 侦听器中执行如下操作:
if(position.isChecked()) {
//do something
}
我已经看了一遍,如果不在布局中添加 checkbox/radio 并改变周围的东西,似乎无法想出任何东西。我很感激任何建议,谢谢!
编辑:
标题有点乱,所以澄清一下:问题不在于项目不清晰selected/unselected,而是我需要处理选中项目的第二次点击.我使用简单的 if/else 逻辑来处理这个问题,虽然有效但会在项目的其他地方引起问题,这就是为什么我想知道是否有一些 built-in 功能来检查项目是否被选中。
如果使用 Buddy 的 isItemChecked(position)
建议对您不起作用,下面是 listener
.
中的一个潜在解决方案
如果我对您的需求理解正确,您基本上希望用户首先 select 一个项目,然后 "confirm" selection 第二次点击该项目。
如果是这种情况,我认为您已经非常接近解决方案了。在 listener
之外创建一个变量。在OnItemClickListener
、if
变量为空或不等于selected Item
时,将变量设置为selected [=]的值16=]。 Else
,运行你要的代码!
示例:
myListView.setOnItemClickListener(new OnItemClick Listener() {
public void onItemClick(AdapterView<?> parentView, View childView, int position, long id) {
if (selectedItem == null || selectedItem != position)
selectedItem = position;
else {
//do whatever it is you wanted to do after the second click!
} //end else
} //end onItemClick
}); //end onItemClickListener
当然,每次再次调出 ListView
时,您都需要清除 selectedItem
!你怎么看?
您可以使用 list.isItemChecked(position)
。参见 docs
我正在使用 list.setItemChecked(position, true)
将项目设置为在我的 ListView
中选中,当点击时。但是,我没有找到查看列表项是否已选中的方法。
ListView
项没有 checkbox/radio 且未使用 CheckedTextView
。 ListView
设置为 CHOICE_MODE_SINGLE
。
ListView onItemClick 监听器
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
list.setItemChecked(position, true);
}
适配器获取视图
@Override
public View getView(int position, View convertView, ViewGroup parent) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
rowView = inflater.inflate(R.layout.rowlayout, parent, false);
vg = parent;
TextView textView = (TextView) rowView.findViewById(R.id.label);
textView.setText(names[position]);
TextView textView2 = (TextView) rowView.findViewById(R.id.tvValue);
textView2.setText(stock[position]);
return rowView;
}
有没有办法检查列表项是否被选中?例如,在 onItemClick 侦听器中执行如下操作:
if(position.isChecked()) {
//do something
}
我已经看了一遍,如果不在布局中添加 checkbox/radio 并改变周围的东西,似乎无法想出任何东西。我很感激任何建议,谢谢!
编辑:
标题有点乱,所以澄清一下:问题不在于项目不清晰selected/unselected,而是我需要处理选中项目的第二次点击.我使用简单的 if/else 逻辑来处理这个问题,虽然有效但会在项目的其他地方引起问题,这就是为什么我想知道是否有一些 built-in 功能来检查项目是否被选中。
如果使用 Buddy 的 isItemChecked(position)
建议对您不起作用,下面是 listener
.
如果我对您的需求理解正确,您基本上希望用户首先 select 一个项目,然后 "confirm" selection 第二次点击该项目。
如果是这种情况,我认为您已经非常接近解决方案了。在 listener
之外创建一个变量。在OnItemClickListener
、if
变量为空或不等于selected Item
时,将变量设置为selected [=]的值16=]。 Else
,运行你要的代码!
示例:
myListView.setOnItemClickListener(new OnItemClick Listener() {
public void onItemClick(AdapterView<?> parentView, View childView, int position, long id) {
if (selectedItem == null || selectedItem != position)
selectedItem = position;
else {
//do whatever it is you wanted to do after the second click!
} //end else
} //end onItemClick
}); //end onItemClickListener
当然,每次再次调出 ListView
时,您都需要清除 selectedItem
!你怎么看?
您可以使用 list.isItemChecked(position)
。参见 docs