自定义布局的ListActivity不调用getview

2024-01-02

我有一个带有自定义行布局的 ListActivity。行布局由复选框、文本视图和图像按钮组成。

其背后是一个自定义对象的 ArrayList,仅包含一个字符串和一个布尔值。我想要复选框来反映布尔值,文本视图来反映 Sting,右侧的按钮将启动一个操作。

我使用 ArrayAdapter 页面上列出的最后一个构造函数来尝试将它们绑定在一起。ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects)

由于某种原因,textView 由对象 toString() 填充,而不是由 getView 填充。因此,复选框根本不会获取布尔值。有任何想法吗?

public class ListSelection extends ListActivity {
    private ArrayList<ListItem> list;
    private ArrayList<String> deleted;  

    static private final String TAG = "kinder";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "ListSelection.onCreate");   

        list = new ArrayList<ListItem>();
        deleted = new ArrayList<String>();

        Intent temp = getIntent();
        String[] listNames = temp.getStringArrayExtra("listNames");
        boolean[] listStatus = temp.getBooleanArrayExtra("listStatus");
        for (int i = 0; i < listNames.length; i++) {
            list.add(new ListItem(listNames[i], listStatus[i]));
        }

        **setListAdapter(new ArrayAdapter<ListItem>(this, R.layout.selectionlistitem, R.id.text, list));**

    }

    private class ListItem {
        String listName;
        Boolean listStatus;     
        public ListItem(String name, boolean status) {
            listName = name;
            listStatus = status;
        }
        @Override
        public String toString() {
            return listName;
        }
    }

    public class ListItemArrayAdapter extends ArrayAdapter<ListItem> {
        int resource;
        LayoutInflater vi;
        private List<ListItem> items;

        public ListItemArrayAdapter(Context context, int _resource, List<ListItem> listitems) {
            super(context, _resource, listitems);
            Log.d(TAG, "listItemArrayAdapter");
            vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            resource = _resource;
            this.items = listitems;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Log.d(TAG, "listItemArrayAdapter.getView");
            LinearLayout newView;

            ListItem item = getItem(position);

            if (convertView == null) {
                newView = new LinearLayout(getContext());
                vi.inflate(resource, newView);
            } else {
                newView = (LinearLayout)convertView;
            }

            TextView textview = (TextView)newView.findViewById(R.id.text);
            Log.d(TAG, item.listName);
            textview.setText(item.listName);

            CheckBox checkbox = (CheckBox)newView.findViewById(R.id.checkbox);
            checkbox.setChecked(item.listStatus);
            return newView;
        }
    }

}

在我看来,你应该替换这一行:

setListAdapter(new ArrayAdapter<ListItem>(this, R.layout.selectionlistitem, R.id.text, list));

有了这个:

setListAdapter(new ListItemArrayAdapter<ListItem>(this, R.layout.selectionlistitem, list));

就目前而言,您正在使用默认的视图生成逻辑ArrayAdapter,这是喂养toString()对于每个数组元素TextView.

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

自定义布局的ListActivity不调用getview 的相关文章

  • 是否可以在图片上叠加图标

    我正在创建一个允许用户上传图片的应用程序 当图片上传成功后 我想在右上角添加一个绿色的勾号 可绘制 失败时也一样 但有一个十字 Atm 我正在使用 Glide 在屏幕上显示 URI 我怎样才能做到这一点 您可以通过调用 glide 侦听器来
  • R 无法解析为变量

    我想修复这个错误 R 无法解析为变量 我查了很多答案 但找不到正确的答案 我尝试了一切 有人可以帮助我吗 我的主要活动是自动创建的 显示错误的是从以下位置开始的三行case R id button1 package de vogella a
  • Android - SimpleCursorAdapter 是否允许像 BaseAdapter 一样的多种布局?

    我知道你可以创建一个自定义Adapter延伸BaseAdapter并创建各种布局 这些布局可以根据哪一行进行扩展AdapterView is at 但是有没有什么方法可以通过SimpleCursorAdapter 例如 我有一个数据库 我想
  • 在flutter中跟踪背景位置时使用background_locator插件时出现问题

    我正在尝试使用 flutter 跟踪后台位置 为此我正在使用背景定位器 https pub dev packages background locator插入 它的实现方式是注册某些静态回调函数 我声明了一个 File 类型的类变量来在后台
  • 带 html 表格的 TextView

    我有个问题 我想放入 TextView html 格式文本 我添加如下
  • 使用 Firebase Java API 检索/格式化数据的最佳方式

    我在用着Firebase用于数据存储Android项目 并使用Firebase Java API来处理数据 不过 我不确定我是否尽可能高效地完成此操作 并且我希望获得一些有关检索和格式化数据的最佳实践的建议 我的Firebase存储库看起来
  • 如何将数据从当前活动传递到暂停的活动?

    我想知道如何将数据从当前活动传递到暂停的活动 请指教 我们将暂停的活动称为 A 将 当前 活动称为 B 让 B 将结果传达给 A 的方法是 A 调用startActivityForResult 代替startActivity 并供 B 使用
  • if-else 无法与我的复选框一起正常工作

    我的应用程序中有一个网格 当我选择一个项目时 它会前瞻性地加载该项目 我只想允许仅在以下情况下选择该复选框isMayoBaseAvailable返回真 这是我使用的代码 当我使用此代码并调试它时它工作正常 但是当我运行应用程序并检查它时总是
  • Android - 尝试重新打开已关闭的对象:使用 loaderManager 的 SQLiteQuery

    我对 android 相当陌生 我对过滤后的 listView 和它从横向模式更改为纵向模式的活动有一些问题 反之亦然 我有一个用于过滤 drinkSearch 的 editText 只要我不更改视角 纵向与横向 此过滤就有效 这是我得到的
  • firebase android 基于类的更新不尊重字段名称的大小写

    我声明了以下类 注意大小写选择 public class User private String DisplayName private Boolean Proxy false SuppressWarnings unused public
  • 如何将字节数组转换为图像 [kotlin]

    我想将字节数组转换为图像并在图像视图中显示它 但不知道该怎么做 有人可以指导我吗 我使用这个函数将位图转换为字节数组 private fun BitmapToByteArray ByteArray val stream ByteArrayO
  • 如何使用appium自动化Android手机后退按钮

    我正在使用 Appium python 客户端库 对 Android 上的混合移动应用程序进行测试自动化 我无法找到任何方法来自动化或创建手势以使用 电话后退 按钮返回到应用程序的上一页 有没有可以使用的驱动函数 我尝试了 self dri
  • android 中的 lang.NumberFormatException

    我有以下代码 除了在后台线程中从数据库读取一些值并使用这些值之外什么也不做 我使用 jar 绘制折线图 对于我用于每个数组值的折线图 问题是第三个我传递给绘制 LineChart 的构造函数的参数是 float float viteza S
  • 将项目导入 Eclipse 后出现“必须重写超类方法”错误

    任何时候我必须将我的项目重新导入到 Eclipse 中 如果我重新安装了 Eclipse 或者更改了项目的位置 几乎全部我的重写方法的格式不正确 导致错误 该方法必须重写超类方法 值得注意的是 无论出于何种原因 Android 项目中方法参
  • 随机关闭应用程序 - InputManagerService:收到 RemoteException 发送 setActive(false) 通知

    我有一个非常简单的Android应用程序 类似于手指画应用程序 我是 用手指在屏幕上画一些线条 我的问题是 应用程序随机关闭自己 让我回到 安卓主屏幕 我在 LogCat 上能看到的唯一日志就是这一行 Warning Tag InputMa
  • 应用程序启动时显示徽标几秒钟

    我想在应用程序启动并且菜单可见之前显示徽标几秒钟 当它消失时我也想使用一些 我应该创建一个新活动吗 我可以在布局中设置它吗 为包含您的徽标的初始屏幕定义一个布局 然后将此代码添加到您的活动中 public void onCreate Bun
  • cordova-plugin-whitelist 适用于 Android,但不适用于 iOS (Phonegap Build)

    我正在开发一个用 Cordova 封装并使用 Phonegap Build 构建的 JavaScript 应用程序 我们包括cordova plugin whitelist来自我们构建中的 npm 并添加了
  • sqlite3权限被拒绝android

    我试图直接在 Nexus 上访问我正在开发的应用程序的数据库 但当我尝试执行 sqlite3 命令时 我收到 权限被拒绝 的消息 我还尝试在 root mod 中启动 adb 但再次 设备上的权限被拒绝 我想我必须使用模拟器来做到这一点 但
  • 找不到图标路径的 Cordova Android 版本

    打字时cordova build android在 DOS 框中 没有构建任何内容 但我看到一条错误消息 错误 源路径不存在 resources android icon drawable hdpi icon png 我已经更新了 Cord
  • Android API 8、10 ContactsContract.Data.HAS_PHONE_NUMBER 没有这样的列

    以下查询在我的设备上运行良好 API 15 它在我运行 API 8 或 API 10 的模拟器中不起作用 这是查询 Cursor contactsCur getContentResolver query ContactsContract D

随机推荐