自定义适配器不显示任何项目

2024-04-03

这是先前问题的后续:ListView android 行中的 ImageButton 不工作 https://stackoverflow.com/questions/29819256/imagebutton-within-row-of-listview-android-not-working/29824507?noredirect=1#comment47783289_29824507但根据专家的建议,有人建议我发布一个新问题。 问题是我有一个自定义适配器不显示任何数据。我研究过其他问题,但没有提供解决方案。

在我的主要活动中,我有几个按钮,其中一个:ToDo,应该创建一行来显示来自 SQLite 数据库的数据,并且根据某些因素(主要是日期),它显示一种存储为的交通灯类型一个可绘制的。

此行中的部分项目是一个图像按钮,我希望用户能够单击该按钮并且图像应该更改。用户还应该能够单击实际行并启动新活动。

我遇到的问题是没有显示任何数据。

所以,这是我的代码:

  public class MainActivity extends Activity {
  // definitions etc ...
  @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       // definitions etc ...
    }

    public void ToDo(View v){  // the user has clicked in the ToDo button
    IgroDatabaseHelper helper = new IgroDatabaseHelper(getBaseContext()); // create instance of SQLIte database
    numRows = helper.NumEntries("ToDo"); // Get the number of rows in table
    int i = 1;
    ArrayList<RowItem> rowItems = new ArrayList<>();
    RowItem myItem1;
    while (i <= numRows){
       // get items from database
       // depending on value select different drawable
       // put data into List Array of RowItem
       myItem1 = new RowItem(TheWhat, R.drawable.teamworka, R.drawable.redtrafficlight, R.drawable.checkbox, TheWhenBy);
                    rowItems.add(myItem1);
       //
       i = i+ 1;
    }

   ListView yourListView = (ListView) findViewById(R.id.list);
   CustomListViewAdapter customAdapter = new CustomListViewAdapter(this, R.layout.todo_row, rowItems);
   yourListView.setAdapter(customAdapter);
 }

自定义 ListView 适配器如下所示:

public class CustomListViewAdapter extends ArrayAdapter<RowItem> {

Context context;
ArrayList<RowItem> _rowItems;

public CustomListViewAdapter(Context context, int resourceId,
        ArrayList<RowItem> rowItems) {

    super(context, resourceId);
    this.context = context;
    _rowItems = rowItems;
    System.out.println("I am in the custom Adapter class "+ _rowItems);
}


@Override
public View getView(int position, View convertView, ViewGroup parent){
    System.out.println("This is the get view");
    View row = convertView;
    RowItem item = _rowItems.get(position);

    // you can now get your string and drawable from the item
    // which you can use however you want in your list
    String columnName = item.getColumnName();
    int drawable = item.getDrawable();
    if (row == null) {
        LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       row = mInflater.inflate(R.layout.todo_row, parent, false);

    }

    ImageButton chkDone = (ImageButton) row.findViewById(R.id.chkDone);
    chkDone.setOnClickListener(new View.OnClickListener() {              
          @Override
          public void onClick(View v) {
                View parentRow = (View) v.getParent();
                ListView listView = (ListView) parentRow.getParent();
                final int position =   listView.getPositionForView(parentRow);
                System.out.println("I am in position "+ position);
          }
     });

    return row;
}
}

RowItem 类如下所示:

public class RowItem {
   private String _heading;
    private int _icon;
    private int _lights;
    private int _chkdone;
    private String _date;


    public RowItem(String heading, int icon, int lights, int chkDone, String date) {
         _heading = heading;
         _icon = icon;
         _lights = lights;
         _chkdone = chkDone;
         _date = date;

        System.out.println("adding stuff to my rows");
        System.out.println("my column Name is " + heading);
        System.out.println("My drawable int is "+ icon);

    }

    public String getColumnName() {
        System.out.println("column Names is "+ _heading);
        return _heading;
    }

    public int getDrawable() {
        return _icon;
    }

    public int getLights(){
        return _lights;
    }

    public int getchkDone(){
        return _chkdone;
    }

    public String getDate(){
        return _date;
    }
}

正如我之前提到的,我显然遗漏了一些东西,没有显示任何数据。我知道有 2 行项目传递给 CustomListViewAdapter。但我也知道 CustomListViewAdapter 内的 View getView 实际上并没有被调用。

我希望我已经提供了足够的信息/代码,但是如果您觉得我需要进一步解释一些内容,请说。

提前非常感谢大家!


我没有看到 getCount() 方法。你应该像这样重写它:

@Override
    public int getCount() {
        return _rowItems.getCount();
    }

或者,致电super(context, resourceId, rowItems);也应该修复它。

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

自定义适配器不显示任何项目 的相关文章

  • 使用workmanager时Firestore脱机持久性错误

    我正在使用一个WorkManger定期从我的中检索信息Firestore当应用程序处于后台和前台时的数据库 此信息用于根据状态更新 UI 因此不同的状态会添加或删除 UI 的不同部分 第一次运行时效果很好 但是 一旦应用程序处于后台并且Wo
  • React Native 从 JavaScript 代码内部访问 strings.xml

    有没有办法访问当前值android app src main res values strings xml从 JavaScript 代码内部 我想为每个构建放置不同的端点 URL 但我什至无法检测到反应本机代码内的构建类型 而不必求助于 D
  • StrictMode 策略违规:我的应用程序中存在 android.os.strictmode.LeakedClosableViolation?

    Android 开发新手 第一次在我的应用程序上尝试 StrictMode 我注意到以下内容 并想知道这是否是我的应用程序或库中的问题 我不太清楚 谢谢你 D StrictMode StrictMode policy violation a
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • android xamarin 中的 reCaptcha

    我想在 Xamarin android 应用程序中实现验证码 我抓住了这个在 Android 中集成 googles reCaptcha 验证 https www c sharpcorner com article how to integ
  • Android Activity 生命周期函数基础知识

    我正在测试这段代码 它显示活动所处的状态 public class Activity101Activity extends Activity String tag Lifecycle Called when the activity is
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • Android 中 Kotlin 协程的正确使用方式

    我正在尝试使用异步更新适配器内的列表 我可以看到有太多的样板 这是使用 Kotlin 协程的正确方法吗 这个可以进一步优化吗 fun loadListOfMediaInAsync async CommonPool try Long runn
  • 是否必须删除 Intent extra?

    这可能是一个愚蠢的问题 但是是否有一条规则规定消费活动必须显式删除 Intent 额外内容 或者只有在回收 Intent 对象时才如此 换句话说 如果我总是通过执行以下操作来链接到下一个活动 Intent i new Intent MyCu
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 尝试将相机切换回前面但出现异常

    尝试将相机切换回前面 但出现异常 找不到 问题请检查并帮助 error 01 27 11 49 00 376 E AndroidRuntime 30767 java lang RuntimeException Unable to start
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 获取当前 android.intent.category.LAUNCHER 活动的实例

    我创建了一个库项目 并在多个应用程序之间共享 我实现了一个简单的会话过期功能 该功能将在一段时间后将用户踢回到登录屏幕 登录屏幕活动是我的主要活动 因此在清单中它看起来像这样
  • 我想实现下面的布局,按钮应该在屏幕底部,当惰性列被填充时,按钮不应该出去

    顶部有惰性列 惰性列下方有输入电话号码布局并从电话簿布局添加联系人 我希望当未添加联系人时此布局位于顶部 当我添加大量联系人时输入电话号码并添加电话簿布局中的联系人会随着惰性列滚动并移出屏幕 我不让他们走出屏幕 当接触较多时 它们必须粘在底
  • Android向menuItem添加子菜单,addSubMenu()在哪里?

    我想根据我的参数以编程方式将 OptionsMenu 内的子菜单添加到 menuItem 中 我检查了android sdk中的 MenuItem 没有addSubMenu 方法 尽管你可以找到 hasSubMenu 和 getSubMen
  • .isProviderEnabled(LocationManager.NETWORK_PROVIDER) 在 Android 中始终为 true

    我不知道为什么 但我的变量isNetowrkEnabled总是返回 true 我的设备上是否启用互联网并不重要 这是我的GPSTracker class public class GPSTracker extends Service imp
  • 增加活动的屏幕亮度

    显然 Android 操作系统中至少有三种不同的技术可以改变屏幕亮度 其中两个在纸杯蛋糕之后不再起作用 而第三个被接受的技术显然有一个错误 我想在单视图活动开始时增加屏幕亮度 然后在活动结束时将亮度恢复为用户设置 没有按钮 没有第二个视图或
  • 将 Intent 包装在 LabeledIntent 中以用于显示目的

    要求 我的应用程序中有一个 共享 按钮 我需要通过 Facebook 分享 我需要选择是否安装原生 Facebook 应用程序 我们的决定是 如果未安装该应用程序 则将用户发送到 facebook com 进行分享 当前状态 我可以检测何时
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分

随机推荐

  • Swift:如何仅更改 webView 中的 或图像大小

    我从服务器获取 HTML 并将其显示在 UIWebView 中 由于要求 未选择 缩放页面以适合 选项 UIWebView 的宽度等于屏幕宽度 高度根据内容而变化 HTML 中的图像标签包含一些内联样式 这些样式在 webView 的视图中
  • Python matplotlib:指定图形大小时未释放内存

    我正在使用 matplotlib 生成许多数值模拟结果图 这些图用作视频中的帧 因此我通过重复调用与此类似的函数来生成其中的许多图 from pylab import def plot density filename i t psi Na
  • PHP 提交表单后保持复选框选中状态

    大家好 我有一份联系表格和验证码 我希望在提交表格后保持检查状态 我发布了文本框值 它显示正确 但复选框不起作用 这是我的代码
  • Pandas 将列类型从列表转换为 np.array

    我正在尝试将一个函数应用于 pandas 数据框 这样的函数需要两个 np array 作为输入 并且它使用定义良好的模型来拟合它们 关键是我无法从选定的列开始应用此函数 因为它们的 行 包含从 JSON 文件读取的列表 而不是 np ar
  • 如何将节点检查器与“npm start”一起用于我的应用程序?

    我在用npm start启动我的 MEAN 堆栈应用程序 但我想使用节点检查器来调试一些 Mongoose 我知道我可以启动节点检查器node inspector 但是我可以用什么来代替node debug app js与 使npm sta
  • Delphi - 从静态链接的 MSVC++ 编译的 DLL 捕获 stdout 和 stderr 输出

    我一直在努力捕捉stdout and stderr我的 Delphi 应用程序静态链接到的 MSVC 中编译的 DLL 的输出 但到目前为止尚未成功 procedure Test var fs TFileStream begin fs TF
  • 从另一个 git 存储库链接单个文件

    你如何链接一个单个文件从另一个 git 存储库到您自己的存储库 我不需要完整的存储库 只需要一个文件 使用git submodule看似正确的路线 但它想要抓住整个事情 考虑到 git 的工作单元是一个存储库 或者更准确地说是一个存储库 c
  • 禁用 JavaFX 图表背景图像的缓存

    我有一个简单的折线图 按下按钮即可在新窗口中打开 该折线图使用存储在硬盘上的图像作为背景 如果我关闭计算折线图的窗口 更改图像文件 或删除它 并重新打开窗口 则会再次加载旧图像 我在场景生成器和代码中禁用了折线图的缓存 但这没有帮助 有人能
  • 返回 false 不起作用

    我创建了一种带有动态创建复选框的表单 我使用了一个 j 查询脚本来检查天气用户是否选中了至少一个复选框 如果没有 那么它会发出错误消息警报 HTML 代码 print
  • android:应用程序不支持设备 - 为什么?

    我目前正在开发一个相机应用程序 现在 一位用户抱怨他的设备不受支持 它是宏碁A200 http www specsbox com 819 acer iconia a200 tablet html 我不明白为什么 android market
  • 如何从Qt调用evaluateJavaScript()函数?

    我无法从 QT 调用 javascript 函数 我正在使用下面的代码 QT代码 QWebFrame frame m d gt m webView gt page gt mainFrame frame gt evaluateJavaScri
  • Acumatica 实时动态下拉列表

    我有以下用例 Acumatica 组合框 下拉列表 可以有 8 个左右的值 其选择决定了用于在组合框 下拉列表中呈现的表 DAC e g 如果当前StatusProfileID WO1 和Status WCMP WCMP 是当前版本User
  • jQuery 选择器检查元素是否动画隐藏

    有没有办法判断一个元素是否被隐藏或当前正在隐藏 通过动画 我能想到的唯一方法是将标志存储在元素的data你打电话时show or hide 但我想知道是否还有其他方法 你能为它做一个自定义的 jQuery 选择器吗 function var
  • 可达性 - 奇怪的问题

    Reachability r Reachability reachabilityWithHostName www google com 这条线在设备上工作正常 但在模拟器上我崩溃了 由于未捕获的异常 NSInvalidArgumentExc
  • 如何在 jQuery 中读取绑定的悬停回调函数

    我使用 jQuery 为页面上的元素设置悬停回调 我现在正在编写一个模块 需要临时为某些元素设置新的悬停行为 新模块无法访问悬停功能的原始代码 我想在设置新的悬停功能之前存储旧的悬停功能 以便在完成临时悬停行为后可以恢复它们 我认为这些可以
  • 从 bash 在默认编辑器中打开文件

    如何使用 bash 打开使用默认 GUI 编辑器生成的脚本生成的文件 在 OS X 上有命令open 但据我所知 linux 上不存在 什么是好的跨平台替代方案 执行open somefile ext在 OS X 上 效果与我在 Finde
  • 无法在 ASP.NET 中纠正 VeraCode CWE ID 918 - (SSRF)

    长话短说 无论我如何尝试 VeraCode 都会继续将我的 8 行代码标记为 CWE 918 缺陷 这是旧代码 所以我不确定为什么它突然被标记 这是一个示例 offending 方法 其中标记行以粗体显示 public virtual as
  • ItemTouchHelper startSwipe 不起作用

    我尝试在适配器内使用 startSwipe 但似乎不起作用 奇怪的是 当我尝试用手指手动滑动它时 它起作用了 只是当我单击支架内的按钮时 startSwipe 不起作用 需要这方面的帮助 这是我调用 startSwipe 的地方 在 onC
  • Intellij+Springboot+Thymeleaf+gradle - 自动重新加载html资源

    我正在使用 IntelliJ Ultimate Spring Boot 和 Thymeleaf 我想启用 HTML 自动重新加载 而无需重新启动服务器 也无需使用 CTRL F9 我已经阅读了以下内容 我认为它应该有效 但事实并非如此 ht
  • 自定义适配器不显示任何项目

    这是先前问题的后续 ListView android 行中的 ImageButton 不工作 https stackoverflow com questions 29819256 imagebutton within row of list