【发布时间】:2015-03-15 23:20:51
【问题描述】:
我想制作一个按钮,当单击该按钮时,自定义 ListView 中的所有项目都会被检查。 ListView 由 3 个 TextView 和 1 个 CckeckBox 组成。适配器如下:
public View getView(final int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(id, null);
}
final Item o = items.get(position);
if (o != null) {
TextView t1 = (TextView) v.findViewById(R.id.TextView01);
TextView t2 = (TextView) v.findViewById(R.id.TextView02);
TextView t3 = (TextView) v.findViewById(R.id.TextViewDate);
final CheckBox checkBox1 = (CheckBox) v.findViewById(R.id.checkBox1);
checkBox1.setTag(o.getPath());
checkBox1.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
int getPosition = (Integer) buttonView.getTag(); // Here we get the position that we have set for the checkbox using setTag.
items.get(getPosition).setSelected(buttonView.isChecked()); // Set the value of checkbox to maintain its state.
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) buttonView ;
if(cb.isChecked()){
if(!FileChooser1.clickedItems.contains(o.getPath())){
FileChooser1.clickedItems.add(o.getPath());
}
}else{
FileChooser1.clickedItems.remove(o.getPath());
}
}
});
checkBox1.setTag(position);
ImageView imageCity = (ImageView) v.findViewById(R.id.fd_Icon1);
String uri = "drawable/" + o.getImage();
int imageResource = c.getResources().getIdentifier(uri, null, c.getPackageName());
Drawable image = c.getResources().getDrawable(imageResource);
imageCity.setImageDrawable(image);
if(t1!=null)
t1.setText(o.getName());
if(t2!=null)
t2.setText(o.getData());
if(t3!=null)
t3.setText(o.getDate());
if(o.getImage().equals("directory_up")){
checkBox1.setVisibility(View.GONE);
}else{
checkBox1.setVisibility(View.VISIBLE);
}
if(someBoolean == true)
{
checkBox1.setChecked(true);// here i set the checkbox to true for all items
}
}
return v;
}
}
FileChooser1.clickedItems 是一个 ArrayList,其中包含所有单击的项目,问题是只有在屏幕上看到的项目才会添加到 ArrayList,例如,当我滚动到手机屏幕底部时,只有那些项目将在屏幕上看到的内容添加到列表中。例如我有 20 个项目,起初当我打开活动时,它只向 ArrayList 添加 8 个第一个项目,如果我进一步向下滚动,那么出现在底部的那些项目将被添加到 arraylist,无论如何都没有添加无需滚动即可将所有项目添加到列表中?非常感谢
【问题讨论】:
-
您的
items对象必须是静态的 -
谢谢,但它也不适用于静态
标签: android