Android中的列表视图选择问题
我拥有的Android中的列表视图选择问题,android,android-listview,Android,Android Listview,我拥有的 selectAll.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { List<Item> selectList = dir; for (int i = 1; i < list.getChildCount(); i++) {
selectAll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
List<Item> selectList = dir;
for (int i = 1; i < list.getChildCount(); i++) {
tmpView = list.getChildAt(i);
select = (ImageView) tmpView.findViewById(R.id.fileSelect);
select.setVisibility(View.VISIBLE);
}
for (int i = 1; i < selectList.size(); i++) {
Item o = adapter.getItem(i);
o.setSelected();
}
}
});
我有一个显示设备上文件的列表视图。我有一个隐藏的ImageView,当用户单击“全选”按钮时,我想使其可见
问题
selectAll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
List<Item> selectList = dir;
for (int i = 1; i < list.getChildCount(); i++) {
tmpView = list.getChildAt(i);
select = (ImageView) tmpView.findViewById(R.id.fileSelect);
select.setVisibility(View.VISIBLE);
}
for (int i = 1; i < selectList.size(); i++) {
Item o = adapter.getItem(i);
o.setSelected();
}
}
});
当用户单击“全选”按钮时,不会选择所有项目。当我向下滚动时,我发现一些项目还没有被选中(那里的图像视图仍然不可见)
我的代码
selectAll.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
List<Item> selectList = dir;
for (int i = 1; i < list.getChildCount(); i++) {
tmpView = list.getChildAt(i);
select = (ImageView) tmpView.findViewById(R.id.fileSelect);
select.setVisibility(View.VISIBLE);
}
for (int i = 1; i < selectList.size(); i++) {
Item o = adapter.getItem(i);
o.setSelected();
}
}
});
selectAll.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
List selectList=dir;
对于(int i=1;i
请建议如何解决这个问题?我知道ListView项被重用,这实际上是造成问题的原因,但我不知道如何解决这个问题。您的方法不正确。原因ListView.getChildCount()仅返回可见列表项的数量。
我建议采用这种简洁的方法:尝试将选定属性添加到项目中,然后可以通过通知数据集更改来更新视图。看起来是这样的:
public class Item{
boolean selected;
}
public View getView(int position, View convertView, ViewGroup parent) {
// do something to get view
if(item.selected){
yourImageView.setVisibility(View.VISIBLE);
}else{
yourImageView.setVisibility(View.INVISIBLE);
}
}
您的适配器应该是这样的:
public class Item{
boolean selected;
}
public View getView(int position, View convertView, ViewGroup parent) {
// do something to get view
if(item.selected){
yourImageView.setVisibility(View.VISIBLE);
}else{
yourImageView.setVisibility(View.INVISIBLE);
}
}
最后,在“全选”按钮中,单击“侦听器”:
List<Item> yourList = getYourListData();
for (int i = 1; i < yourList.size(); i++) {
Item o = yourList.get(i);
o.selected = true;
}
// remember notify dataset changed
adapter.notifyDatasetChanged();
List yourList=getYourListData();
对于(int i=1;i
您可以发布您的适配器代码吗?尝试使用标志,当选择所有按钮时,单击“使标志为真”,并通知您的列表尝试在适配器中基于此标志显示列表上的图像。Aritra@Haresh是对的,您需要在适配器类的getView方法中处理该问题,如果您有问题,请发布该代码谢谢,这是一个很好的解决方案。我的代码现在运行良好。