小编Via*_*lav的帖子

当空数据集时,RemoteViewsFactory调用getViewAt

我正在为我的应用程序创建基于StackView的小部件,并且应该显示一些项目.项目数量可能因用户操作而有所不同 - 假设它是某种收藏菜单.我已经实现了RemoteViewsFactory后代来为StackView生成视图:

public class StackRemoteViewsFactory implements RemoteViewsFactory {

    private List<Item> data;
    private Context context;

    public StackRemoteViewsFactory(Context context) {
        this.context = context;
        data = new DAO(context).getFavouriteCards();
    }

    @Override
    public void onDataSetChanged() {
        data = new DAO(context).getWidgetItems(); // refresh widget dataset
    }

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

    @Override
    public RemoteViews getViewAt(int position) {
        Item item = data.get(position);
        // this is my problem and will be explained below - 
        // here I'm getting IndexOutOfBoundsException, position = 0

            ...
    } …
Run Code Online (Sandbox Code Playgroud)

android android-widget stackview remoteview

10
推荐指数
1
解决办法
3022
查看次数

Java Swing条形码创建

我正在开发一个简单的打印贴纸应用程序,我需要打印条形码.出于某些原因,我需要生成条形码作为文本而不是图像.条形码创建和打印都很好,但扫描仪无法识别这些条形码.

我正在使用JLabel组件和系统条形码字体(IDAutomationHC39M, C39HrP24DhTt)来创建条形码.扫描仪试图识别它(它自动切换到恒定激光模式),但没有结果.

条形码文本示例999-999999-9/9

那么,也许我错过了什么或做错了什么?完整的解释或链接将不胜感激!

UPD代码示例

barcodeLabel = new JLabel("*"+hwb.getNumber()+"-1/1*");
Font f = new Font("IDAutomationHC39M",java.awt.Font.PLAIN,8);
barcodeLabel.setFont(f); 
Run Code Online (Sandbox Code Playgroud)

请忽略硬编码的"1/1" - 仅供测试.

UPD打印条码示例 在此输入图像描述

一些更新

它看起来很奇怪,但似乎问题出现在扫描仪中 - 我尝试使用激光扫描仪,我的Android手机上的扫描仪应用程序并没有结果.我之所以称之为奇怪,是因为扫描仪之前成功使用了code39条形码.现在我尝试在我自己的Android应用程序中使用基于zxing的扫描仪进行扫描,并且它已成功识别.我会在接下来的几天里用不同的扫描仪做一些实验.

最后

我试图在另外两台扫描仪(Metrologic和Symbol)上扫描这些条形码,它们显示出完美的结果 - 所有条形码都能成功识别.我认为所有的问题都在我的廉价扫描仪上 - 它适用于激光打印机上打印的条形码,但如果打印质量不理想 - 它没用.我很抱歉,由于这个愚蠢的设备和我自己的疏忽,我已经开始讨论主题.无论如何,感谢所有评论员,主题可能会被关闭.

java swing barcode

9
推荐指数
1
解决办法
2444
查看次数

Android:LibGDX 2D游戏内存消耗

我在使用libGDX开发2D游戏时遇到了一些内存消耗问题.

这是一款具有丰富图形内容的2D游戏 - 有许多纹理,动画,字体等.出于某些原因,所有图形内容都是在游戏开始时加载的 - 这是内存问题.我已经在不同的设备上测试了内存分配(本机和堆)并得到了不同的结果:(我已经按照纹理大小划分了所有设备组)

第1组(纹理采用~840*480屏幕)

HTC Desire(Froyo): 178Mb(本机) - 12Mb(堆) - 应用程序加载成功

HTC One V(ICS): 30Mb(本机) - 12Mb(堆) - 应用程序成功加载

HTC Desire S(Jelly Bean): 30Mb(本机) - 12Mb(堆) - 应用程序加载成功

第2组(纹理采用~1366*768屏幕)

三星(谷歌)Galaxy Nexus 329Mb(原生) - 18Mb(堆) - 效果很好

Galaxy TAB(Honeycomb) 164Mb(本机) - 10Mb(堆) - 应用程序崩溃(Surface.OutOfResouresException).

我认为在所有Android版本上可能存在一些重要的内存管理差异,这给我带来了这些麻烦.

任何人都可以解释在Android 3.x上加载纹理时究竟发生了什么?或者发布一些链接以了解解决此问题需要采取的措施.

一些更新

Toady我在3.x仿真器上做了一些额外的测试(我知道这不是最好的方法,但是之前的日志类似于emu和Galaxy Tab)

  1. 我使用1024*600采用的纹理运行游戏 - 80%加载资源上的应用程序崩溃(158本机内存分配)
  2. 纹理为800*480 - 100%加载时应用程序崩溃(145Mb本机内存分配)

最后我在新的谷歌Nexus平板电脑(Jelly Bean)上运行应用程序,该平板电脑使用与3.x平板电脑(1280*800px)相同的纹理 - 约30Mb本机内存和~12Mb vm堆.

现在我完全不了解正在发生的事情 - 相同的内存分配为纹理800*480和1280*800 ......

最后

我已经使用一些进度条按需加载资源解决了这种情况.在所有的尝试后,我没有找到另一种方式.

memory android opengl-es libgdx

7
推荐指数
1
解决办法
4311
查看次数