如何从活动中选中和取消选中自定义列表视图中的所有复选框?

时间:2017-11-07 14:56:47

标签: android android-checkbox

我尝试通过一次单击检查并取消选中我的活动中的所有复选框。 我试过这段代码:

private ListView mListView;
private Contacts_ListViewAdapter ContactViewAdapter;
private ArrayList<Contacts_ListView> ContactView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    intent = getIntent();
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    mListView = (ListView) findViewById(R.id.Contacts_list);
    Selected_check_box = (CheckBox) findViewById(R.id.Selected_check_box) ;
    View parentLayout = findViewById(android.R.id.content);
  Select_All.setOnClickListener(new View.OnClickListener() {
        private int ContactViewSize;

        @Override
        public void onClick(View view) {
            ListView lv = mListView ;
            int size = ContactViewAdapter.getCount();
            boolean check = lv.isItemChecked(0);
            for(int i = 0; i <= size; i++)
                lv.setItemChecked(i, !check);
    }
    });

它似乎不起作用。

2 个答案:

答案 0 :(得分:0)

setItemChecked(position,value) - 仅在选择模式设置为CHOICE_MODE_SINGLE或CHOICE_MODE_MULTIPLE时有效。尝试设置

var ref = firebase.database().ref('companies/01/users').push();
var randomValue = Math.random();
ref.update({ ..., 'r': randomValue });

...

var ref = firebase.database().ref('companies/01/users')
ref.orderByChild('r').limitToFirst(1).once('value').then(function(snapshot) {
  var data = snapshot.val()
  ...
  snapshot.remove()
});

答案 1 :(得分:0)

您需要更新自定义CursorAdapter中的信息,因为Listview仅构建足够的“列表视图”以显示和回收重用,并动态更改这些视图以提高效率。

在您的自定义适配器下,添加全局差异并更新它。

boolean allcheck = false; //Default unchecked   

更新 bindView

的所有复选框
public void bindView(View view, Context context, Cursor cursor) {
CheckBox box = (CheckBox) view.findViewById(R.id.checkBox);

      box.setChecked(allcheck);

    }