Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android CheckableRelativeLayout上的默认选中复选框_Android - Fatal编程技术网

Android CheckableRelativeLayout上的默认选中复选框

Android CheckableRelativeLayout上的默认选中复选框,android,Android,我需要一些帮助,我不知道如何解决这个问题 当我设置适配器时,我需要在默认情况下选中一些复选框,但我不能这样做。为什么?我认为问题在于可检查的相对性。我使用RelativeLayout的这个变体,因为我需要单击行并选中复选框 当我使用RelativeLayout的这个变体时,列表中的所有复选框都被取消选中。如果最后看到我的日志,选中复选框时会触发onCheckedChanged事件,我不知道为什么 请帮我一点忙,谢谢 这是我的活动代码: @Override protected vo

我需要一些帮助,我不知道如何解决这个问题

当我设置适配器时,我需要在默认情况下选中一些复选框,但我不能这样做。为什么?我认为问题在于可检查的相对性。我使用RelativeLayout的这个变体,因为我需要单击行并选中复选框

当我使用RelativeLayout的这个变体时,列表中的所有复选框都被取消选中。如果最后看到我的日志,选中复选框时会触发onCheckedChanged事件,我不知道为什么

请帮我一点忙,谢谢

这是我的活动代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        items = new ArrayList<Item>();

        items.add(new Item("A1", false));
        items.add(new Item("A2", true));

        listView = (ListView) findViewById(R.id.listView);

        adapter = new Adapter(this, items);
        listView.setAdapter(adapter);


}
    adapter = new Adapter(this, items);
    listView.setAdapter(adapter);

    // !! After set the adapter i check the default checkbox.
    for (int i = 0; i < items.size(); i++) {
        listView.setItemChecked(i, items.get(i).getChecked());
    }
我的支票亲戚

    public class CheckableRelativeLayout extends RelativeLayout implements Checkable {


private boolean isChecked;
private List<Checkable> checkableViews;

public CheckableRelativeLayout(Context context, AttributeSet attrs,
                               int defStyle) {
    super(context, attrs, defStyle);
    initialise(attrs);
}

public CheckableRelativeLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
    initialise(attrs);
}

public CheckableRelativeLayout(Context context, int checkableId) {
    super(context);
    initialise(null);
}

/*
  * @see android.widget.Checkable#isChecked()
  */
public boolean isChecked() {
    return isChecked;
}

/*
  * @see android.widget.Checkable#setChecked(boolean)
  */
public void setChecked(boolean isChecked) {
    this.isChecked = isChecked;
    for (Checkable c : checkableViews) {
        c.setChecked(isChecked);
    }
}

/*
  * @see android.widget.Checkable#toggle()
  */
public void toggle() {
    this.isChecked = !this.isChecked;
    for (Checkable c : checkableViews) {
        c.toggle();
    }
}

@Override
protected void onFinishInflate() {
    super.onFinishInflate();

    final int childCount = this.getChildCount();
    for (int i = 0; i < childCount; ++i) {
        findCheckableChildren(this.getChildAt(i));
    }
}

/**
 * Read the custom XML attributes
 */
private void initialise(AttributeSet attrs) {
    this.isChecked = false;
    this.checkableViews = new ArrayList<Checkable>(5);
}

/**
 * Add to our checkable list all the children of the view that implement the
 * interface Checkable
 */
private void findCheckableChildren(View v) {
    if (v instanceof Checkable) {
        this.checkableViews.add((Checkable) v);
    }

    if (v instanceof ViewGroup) {
        final ViewGroup vg = (ViewGroup) v;
        final int childCount = vg.getChildCount();
        for (int i = 0; i < childCount; ++i) {
            findCheckableChildren(vg.getChildAt(i));
        }
    }
}

最后我找到了答案。。。从这里复制:

它起作用了。我有一个列表视图,默认情况下很少激活复选框,当我向下/向上滚动时,状态不会丢失

我的活动代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        items = new ArrayList<Item>();

        items.add(new Item("A1", false));
        items.add(new Item("A2", true));

        listView = (ListView) findViewById(R.id.listView);

        adapter = new Adapter(this, items);
        listView.setAdapter(adapter);


}
    adapter = new Adapter(this, items);
    listView.setAdapter(adapter);

    // !! After set the adapter i check the default checkbox.
    for (int i = 0; i < items.size(); i++) {
        listView.setItemChecked(i, items.get(i).getChecked());
    }

最后我找到了答案。。。从这里复制:

它起作用了。我有一个列表视图,默认情况下很少激活复选框,当我向下/向上滚动时,状态不会丢失

我的活动代码:

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        items = new ArrayList<Item>();

        items.add(new Item("A1", false));
        items.add(new Item("A2", true));

        listView = (ListView) findViewById(R.id.listView);

        adapter = new Adapter(this, items);
        listView.setAdapter(adapter);


}
    adapter = new Adapter(this, items);
    listView.setAdapter(adapter);

    // !! After set the adapter i check the default checkbox.
    for (int i = 0; i < items.size(); i++) {
        listView.setItemChecked(i, items.get(i).getChecked());
    }

您是否尝试过以下操作:?不工作:,我在复选框之前更改了侦听器setOnCheckedChangeListener。setChecked,clean,rebuild和run是相同的。您是否尝试过以下操作:?不工作:,我在复选框之前更改了侦听器setOnCheckedChangeListener。setChecked,clean,rebuild和run是相同的。