标签: android-checkbox

android listview,复选框随机更改

我有一个列表视图,每行都有一个复选框,当我选择任何复选框然后滚动屏幕时,每个项目的复选框都会发生变化,我的意思是取消选中它的检查,有时它会保持取消选中,然后当我再次向上滚动时,选中的一个变为取消选中,我发现这个问题Android listview带有复选框问题,用户说这有助于他们,但我无法理解我做了什么sholud,请帮助

这是我的适配器

class RestaurantAdapter extends BaseAdapter {
    private static LayoutInflater inflater = null;
    private ArrayList<HashMap<String, String>> data;
    Activity activity;

    public RestaurantAdapter(Activity activity,
            ArrayList<HashMap<String, String>> data) {
        // TODO Auto-generated constructor stub
        this.activity = activity;
        this.data = data;
        inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // …
Run Code Online (Sandbox Code Playgroud)

android android-listview android-checkbox

5
推荐指数
1
解决办法
2393
查看次数

CheckBox在ExpandableListView的子节点中声明

我已经从SO阅读了大约30页以及有关在列表中跟踪检查状态的教程,但是在可扩展ListView中这样做很少有信息(尤其是工作信息).

我让孩子们填充了复选框,但当我检查一组孩子的盒子时,其他组中的随机孩子也会检查.我需要阻止这一点.我认为我读到的最好的信息是将复选框设置为单独的标签,但我不知道如何设置多个标签,当我尝试时,我遇到了类错配错误,将复选框与转换视图进行比较.

有没有人遇到过在expandablelistview的孩子中跟踪复选框状态的好方法?

我做了多处更改,所以我要输入整个适配器代码.请检查几行getGroupView和整个getChildView,并帮我看看我做错了什么.

编辑:现在发生的事情是,当我选中一个框然后展开另一个组时,所有选中的框都取消选中:

public class MyExpandableListAdapter extends BaseExpandableListAdapter
    implements OnCheckedChangeListener {

private Context mContext;

private ArrayList<ContactNameItems> mListDataHeader;
private HashMap<String, List<ContactPhoneItems>> mListDataChild;

private boolean[] mGetChecked;
private HashMap<String, boolean[]> mChildCheckStates;

private ArrayList<String> selectedNumbers;

private ChildViewHolder childViewHolder;
private GroupViewHolder groupViewHolder;

private String numberText;

public MyExpandableListAdapter(Context context,
        ArrayList<ContactNameItems> listDataHeader,
        HashMap<String, List<ContactPhoneItems>> listDataChild,
        ArrayList<String> listOfNumbers) {

    mContext = context;
    mListDataHeader = listDataHeader;
    mListDataChild = listDataChild;
    selectedNumbers = listOfNumbers;

    mChildCheckStates = new HashMap<String, boolean[]>();
}

@Override
public int getGroupCount() {
    return mListDataHeader.size();
}

@Override …
Run Code Online (Sandbox Code Playgroud)

android expandablelistview android-checkbox

5
推荐指数
2
解决办法
1万
查看次数

在API 16及更低版本中完全删除复选框的正确方法

我隐藏了我的盒子有问题CheckBox.我现在CheckBox看起来像这样:

<CheckBox
    android:id="@+id/favoritesBox"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:button="@null"
    android:tag="1"
    android:textStyle="italic"
    android:text="@string/details_tags_favs" />
Run Code Online (Sandbox Code Playgroud)

这里唯一的问题是,它button=@null正在消除它的风格,并没有完全消失.因此,我text没有居中,而是向右移动(按箱子大小).

在API 16和更低版本中是否有一种平滑的方法可以完全摆脱它?

android android-layout android-checkbox

5
推荐指数
1
解决办法
2264
查看次数

Android:如何在底部对齐CheckBox文本?

基本上我想要的是一个带有图标和图标下方文本的复选框,如下所示:

 -------------------
|   CheckBox Icon   |
|                   |
|   CheckBox Text   |
|                   |
 -------------------
Run Code Online (Sandbox Code Playgroud)

默认情况下,图标位于左侧,文本位于右侧,两者位于同一级别.在我正在使用的布局下面:

<CheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Switch state"
    android:button="@drawable/my_custom_selector" />
Run Code Online (Sandbox Code Playgroud)

有关如何实现将图标放在顶部以及图标下方的文本的任何想法?提前致谢 :)

android android-layout android-view android-checkbox

5
推荐指数
2
解决办法
6142
查看次数

Android使用按钮和对话框复选多项选项,并在列表视图中显示所选项目而不是按钮

我正在尝试使用按钮和对话框复选框进行Android多选项目,并在列表视图中显示所选项目(如图片中所示)而不是按钮(当前显示在按钮中:请参考图片)

我能够在下面的按钮中显示接收器,但我想在列表视图中显示相同的内容:

当前从对话框中选择后显示复选框,如:

"Receiver1, Receiver2"
Run Code Online (Sandbox Code Playgroud)

我想要:

image of Receiver1 with Receiver1 Name
image of Receiver2 with Receiver2 Name
Run Code Online (Sandbox Code Playgroud)

SendServiceActivity.java

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.text.Layout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.ImageView;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;

public class SendServiceActivity extends AppCompatActivity implements View.OnClickListener{
protected Button …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-listview android-checkbox android-studio

5
推荐指数
1
解决办法
7110
查看次数

自定义复选框starStyle的外观

我在我的ListView行的xml布局中有以下内容:

 <CheckBox
        android:id="@+id/favbutton"
        style="?android:attr/starStyle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true" />
Run Code Online (Sandbox Code Playgroud)

它显示了一个蓝色的星星,可以检查以选择一个喜欢的.这正是我需要的功能,但我只想自定义显示的星形图标.我想将颜色改为黄色而不是蓝色,如果可能的话也会使星形变小.是否可以通过更改应用于应用程序的主题来进行这些更改?我需要编辑什么才能更改星形图标的外观?

android android-checkbox

4
推荐指数
1
解决办法
2833
查看次数

在ActionBar中的菜单项上添加复选框

我的操作栏中有问题.我正在尝试在ActionBar中的菜单项上添加一个复选框,但它不起作用.它只显示复选框的标题.

这是我的menu.xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="com.tracking.bus.maps.SingleViewMapsActivity" >

        <item
        android:id="@+id/actionbar_alarm"
        android:title="@string/actionbar_alarm"
        app:actionViewClass="android.widget.checkbox"
        app:showAsAction="ifRoom"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

android android-actionbar android-checkbox

4
推荐指数
1
解决办法
8952
查看次数

菜单android上的复选框项状态

如何设置菜单中复选框项目部分的初始值?当我启动一个Activity时,我想设置一个保存在共享首选项中的布尔值.

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".LoginActivity">
    <item
        android:id="@+id/checkbox"
        android:title="@string/checkbox"
        android:orderInCategory="10"
        android:showAsAction="never"
        android:visible="true"
        android:checkable="true"
        android:checked="true"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.login, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId() == R.id.checkbox){

        if(item.isChecked()){
            item.setChecked(false);
        }else{
            item.setChecked(true);
        }
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean(PrefsConsts.CHECKBOX,item.isChecked());
        editor.commit();

    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我总能知道什么是价值,但我不知道如何设置新的价值.

android android-checkbox

4
推荐指数
1
解决办法
9838
查看次数

AppCompatCheckBox不适用于以下API 21

我使用以下代码创建了动态复选框:

XML:

<LinearLayout
    android:id="@+id/layout_checkbox"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">


</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

的.java:

LinearLayout ll = (LinearLayout) findViewById(R.id.layout_checkbox);

ll.removeAllViews();

for (int i = 0; i < 10; i++) {

    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

    AppCompatCheckBox myCheckBox = new AppCompatCheckBox(getApplicationContext());
    myCheckBox.setText(i);
    myCheckBox.setTextColor(Color.parseColor("#FFFFFF"));
    myCheckBox.setHintTextColor(Color.parseColor("#FFFFFF"));
    myCheckBox.setTextSize(12);

    myCheckBox.setId(i);

    ll.addView(myCheckBox, lp);
}
Run Code Online (Sandbox Code Playgroud)

现在从上面的代码只有LOLLIPOP版本显示带有文本的复选框.对于以下LOLLIPOP版本,它仅显示Text但不显示复选框.

如果我将以下代码放在xml文件中,同样适用于所有设备:

<android.support.v7.widget.AppCompatCheckBox
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Testing"
    android:buttonTint="@color/colorAccent"/>
Run Code Online (Sandbox Code Playgroud)

但我不能在xml中定义复选框,因为我必须动态创建它.

即使setButtonTintList不在下面工作LOLLIPOP

如何在下面的LOLLIPOP版本中显示Checkbox AppCompatCheckBox

xml checkbox android android-checkbox android-appwidget

4
推荐指数
1
解决办法
4273
查看次数

Jetpack Compose 复选框未显示更改状态

我有一个用户可以检查的专业列表。当用户对他们的选择感到满意后,我将收集所选复选框的信息并将这些专业保存在用户的个人资料中。

但是,当我点击任何复选框时,视图模型中的状态会发生变化,但复选框仍处于未选中状态。

专业列表

@Composable
fun SpecialtyList(
    viewModel: SpecialtyListViewModel = hiltViewModel(),
    navController: NavController
) {
    LazyColumn(modifier = Modifier.fillMaxSize()) {
        item {
            viewModel.specialtyList.value.forEach { specialty ->
                Row(
                    modifier = Modifier
                        .fillMaxWidth()
                        .padding(10.dp),
                    verticalAlignment = Alignment.CenterVertically
                ) {
                    Checkbox(
                        checked = specialty.isSelected,
                        onCheckedChange = {
                            specialty.isSelected = it
                        },
                        colors = CheckboxDefaults.colors(MaterialTheme.colors.primary)
                )
                    Text(
                        text = specialty.name,
                        modifier = Modifier
                            .padding(horizontal = 10.dp)
                    )
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

专业视图模型

@HiltViewModel
class SpecialtyListViewModel @Inject constructor() : ViewModel() {

    // HARD-CODED PROPERTIES
    val specialtyList …
Run Code Online (Sandbox Code Playgroud)

android android-checkbox android-jetpack-compose

4
推荐指数
1
解决办法
6235
查看次数