将自定义列表视图与 TextView 和 CheckBox 一起使用,并单选 CheckBox

2024-01-12

听说我使用自定义ListView with TextView and CheckBox。 但我希望一次在复选框中进行单一选择 一CheckBox选中后另一项取消选择 使用 BaseAdapter 但这段代码不能正常工作.. 请给我建议..thnks

@Override
public View getView(final int position, View view, ViewGroup parent) {
    Integer selected_position = -1;
    holder = new ViewHolder();
    final Items itm = rowItem.get(position);
    LayoutInflater layoutInflater = (LayoutInflater) context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    if (view == null) {

        view = layoutInflater.inflate(R.layout.activity_custom_list,
                parent, false);

        holder.tvItemName = (TextView) view.findViewById(R.id.textView1);
        holder.check = (CheckBox) view.findViewById(R.id.checkBox1);
        view.setTag(holder);

    } else {
        holder = (ViewHolder) view.getTag();
    }

    holder.tvItemName.setText(itm.getItems());

    if (position == selected_position)
        holder.check.setChecked(true);
    else
        holder.check.setChecked(false);

    holder.check.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            if (holder.check.isChecked()) {
                selected_position = position;
            } else {
                selected_position = -1;
            }
            notifyDataSetChanged();

        }
    });

    return view;
}}

使用带有文本视图的自定义列表视图和带有单选复选框的复选框经过多次尝试,最后我得到了解决方案,我希望它对你们所有人都是有用的代码...... 此代码帮助您创建带有文本视图和复选框的自定义列表视图,然后选择一个复选框,如果您选择另一个复选框,则第一个应自动取消选择......谢谢......

活动主文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.listviewdemo2.MainActivity" >

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" />
</RelativeLayout>

活动_自定义_列表.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.listviewdemo2.CustomListActivity" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/darker_gray" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="80dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="4dp"
        android:layout_weight="0.39"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <CheckBox
        android:id="@+id/checkBox1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="150dp"
        android:layout_marginTop="4dp"/>
</LinearLayout> </LinearLayout>

字符串.xml

<string-array name="name">
   <item>Laptop</item>
    <item>Mobile</item>
    <item>Desktop</item>
    <item>TV</item>
    <item>Pendrive</item>
    <item>Router</item>
    <item>Notebook</item>
    <item>Tablet</item>
    <item>I-pad</item>
    <item>Bluetooth</item>
    <item>HomeTheator</item>
</string-array>

MainActivity.java

String[] ItemName;
List<Items> rowItem;
ListView list;
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rowItem = new ArrayList<Items>();
    ItemName = getResources().getStringArray(R.array.name);

    for(int i = 0 ; i < ItemName.length ; i++)
    {
        Items itm = new Items(ItemName[i]);
        rowItem.add(itm);
    }

    list = (ListView) findViewById(R.id.listView1);
    CustomListActivity adapter = new CustomListActivity(this, rowItem);
    list.setAdapter(adapter);
}

项目.java

公共课项目{

private String items;
 private boolean selected;


public Items(String items) {

    this.items = items;

}

public String getItems() {

    return items;
}

public void setItemName(String name) {

    this.items = name;
}
public boolean getSelected() {
    return selected;
}

public boolean setSelected(Boolean selected) {
    return this.selected = selected;
}}

自定义列表活动.java

public class CustomListActivity extends BaseAdapter {

Context context;
List<Items> rowItem;
View listView;
boolean checkState[];

ViewHolder holder;

public CustomListActivity(Context context, List<Items> rowItem) {

    this.context = context;
    this.rowItem = rowItem;
    checkState = new boolean[rowItem.size()];

}

@Override
public int getCount() {

    return rowItem.size();
}

@Override
public Object getItem(int position) {

    return rowItem.get(position);

}

@Override
public long getItemId(int position) {

    return rowItem.indexOf(getItem(position));

}

public class ViewHolder {
    TextView tvItemName;
    CheckBox check;
}

@Override
public View getView(final int position, View view, ViewGroup parent) {

    holder = new ViewHolder();
    final Items itm = rowItem.get(position);
    LayoutInflater layoutInflater = (LayoutInflater) context
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);

    if (view == null) {

        listView = new View(context);
        listView = layoutInflater.inflate(R.layout.activity_custom_list,
                parent, false);

        holder.tvItemName = (TextView) listView
                .findViewById(R.id.textView1);
        holder.check = (CheckBox) listView.findViewById(R.id.checkBox1);
        listView.setTag(holder);

    } else {
        listView = (View) view;
        holder = (ViewHolder) listView.getTag();
    }

    holder.tvItemName.setText(itm.getItems());

    holder.check.setChecked(checkState[position]);

    holder.check.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {

            for(int i=0;i<checkState.length;i++)
            {
                if(i==position)
                {
                    checkState[i]=true;
                }
                else
                {
                    checkState[i]=false;
                }
            }
            notifyDataSetChanged();

        }
    });
    return listView;
}}

显示输出:-

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将自定义列表视图与 TextView 和 CheckBox 一起使用,并单选 CheckBox 的相关文章

随机推荐

  • openSUSE 的构建必备

    我是 openSUSE 的新手 我需要获得系统的构建必要条件 但无法使用它sudo apt get install build essential或者甚至通过使用sudo apt get update然后按照前面的代码进行操作 我找到了一种
  • 无法使用 SSH 访问 AWS CodeCommit

    弄清楚如何让 AWS CodeCommit 与标准 SSH 身份验证配合使用非常困难 看到另一个类似的主题 但没有答案 我还不能发表评论 这是在 Windows 上使用 Git Bash 重现步骤 创建具有完全权限的 IAM 用户 AwsA
  • 如何从 dropzone.js 上传和删除文件

    我使用了下面的代码 图像已被删除 但缩略图仍然显示 Dropzone options myDropzone init function this on success function file response file serverId
  • 在 R 中将日期转换为星期几

    我的数据框中有一个这种格式的日期 02 July 2015 我需要将其转换为星期几 即 183 就像是 df day of week lt weekdays as Date df date column 但这不理解日期的格式 你可以使用lu
  • 防止引导程序弹出窗口中的默认值

    我正在使用 twitter bootstrap 并且我已经得到了这段代码 addYT on click function event var this this event preventDefault popover placement
  • 递归:如何避免Python设置在迭代过程中更改设置 RuntimeError

    背景及问题描述 我有一些代码可以解决图着色问题 广义上定义为将 颜色 分配给无向图的问题 确保由边连接的两个顶点没有相同的颜色 我正在尝试使用约束传播来实现一个解决方案 以提高标准递归回溯算法的效率 但遇到以下错误 File C Users
  • 我想将 Qt QML Combobox 设置为 PyQt5 对象属性

    我正在编写一个小程序 它使用 Qt5 QML 作为 GUI 层 并使用 Python3 PyQt5 来实现数据模型 我现在想显示一个ComboBox在 QML 中并将其模型设置为枚举列表 如何将枚举导出为 python 类的属性 以便我可以
  • Sling解析脚本调用顺序

    我正在研究 sling 如何根据 url 调用脚本 在选择器的情况下 它似乎工作正常 但如果我不使用选择器 它会让我难以理解 我有一个页面 content AEMProject English test html其中有资源类型AEMProj
  • 如何检查模型中是否存在 DbContext.Set

    我遇到的情况是 我可能正在使用多个 DbContext 这些 DbContext 可能包含也可能不包含 SomeEntity 的 DbSet 当然 如果我关闭 SaveChanges 并且该实体不存在 则会出现以下错误 实体类型 SomeE
  • 如何使用 Java 禁用 Selenium WebDriver 中的 Chrome 插件

    Chrome 插件弹出 https i stack imgur com jRBdG png 当我为此应用程序执行自动化代码时 会显示上面的弹出窗口 现在我需要知道如何使用 Java 禁用 Selenium WebDriver 中的 PDF
  • 使用 CMake 链接到 TBB 库

    I have tbb下载并放置在我的存储库目录中 gt tree deps tbb d deps tbb bin cmake templates include serial tbb tbb compat internal machine
  • Laravel 扩展 TestResponse 类

    我正在尝试添加自定义断言TestReponse https laravel com api 5 5 Illuminate Foundation Testing TestResponse html类所以我可以做这样的事情 response t
  • 如何使多个带有 OR 的 LEFT JOIN 完全使用复合索引? (第2部分)

    它用于计算用户进入 离开工作场所时如何扫描指纹的系统 我不知道它的英文怎么称呼 我需要确定用户是否早上迟到 以及用户是否提前下班 This tb scan表包含用户扫描指纹的日期和时间 CREATE TABLE tb scan scperc
  • Swift:如何使用关联的应用程序打开文件?

    我喜欢在 macOS 上使用 Excel 打开 xls 文件 我只找到了 C 的示例 但没有找到 Swift 的示例 附加问题 即使该文件扩展名与 Excel 无关 是否也可以使用 Excel 启动该文件 有NSWorkspace shar
  • linux内存初始化时内核CPU使用率高

    在服务器上引导我的 java 应用程序时 我遇到了 Linux 内核 CPU 消耗高的问题 此问题仅发生在生产中 在开发服务器上一切都是光速 upd9 关于这个问题 有两个疑问 如何修复它 名义动物建议同步并删除所有内容 这确实有帮助 su
  • Delphi XE3 WM_HOTKEY 如何判断HotKey何时被释放?

    我正在尝试在一个并不总是有焦点的通信程序中编写一个 咳嗽按钮 我有用于使麦克风静音和取消静音的代码 MMDevApi 它工作得很好 我设置了一个全局热键 这非常适合设置静音 现在问题来了 如何判断热键何时被释放 我尝试了代码中所示的计时器
  • C 标准库的更安全替代品

    C 标准库在 I O 安全方面是出了名的差劲 许多函数都有缓冲区溢出 gets scanf 或者如果没有给出正确的参数 scanf 等等 每隔一段时间 我就会遇到一位有进取心的黑客 他编写了自己的库 但没有这些缺陷 您见过的这些库中最好的是
  • 如何制作莫里斯条形图动画?

    我正在尝试对莫里斯条形图进行动画处理 莫里斯条形图已显示 但我想要每个条形的动画和不同的颜色 我的代码是 success function response body css cursor default if response statu
  • Webpack 4 模块解析失败:意外字符“@”(1:0)

    当我尝试运行时出现此错误npm run dev将我的 scss 编译为 css 我知道这个问题与 import src scss main scss 中出现错误 模块解析失败 意外字符 1 0 您可能需要适当的加载程序来处理此文件类型 导入
  • 将自定义列表视图与 TextView 和 CheckBox 一起使用,并单选 CheckBox

    听说我使用自定义ListView with TextView and CheckBox 但我希望一次在复选框中进行单一选择 一CheckBox选中后另一项取消选择 使用 BaseAdapter 但这段代码不能正常工作 请给我建议 thnks