
我的sqliteOpenHelper类有问题.
我有一个与打印机制造商有关的数据库,以及任何类型打印机的详细信息.
我尝试使用此代码从数据库中获取所有制造商,并将其返回到arrayList中.
// Read database for All printer manufacturers and return a Listpublic ArrayList<String> getPrManufacturer(){ ArrayList<String> manufacturerList = new ArrayList<String>(); sqliteDatabase db = getReadableDatabase(); Cursor cursor = db.query(CoDeskContract.Printer.table_name, printerManuProjection, null, null, null, null, null,null); // If cursor is not null and manufacturer List // does not contains Manufacturer in the List then add it! if ((cursor != null) && (cursor.getCount()>0)){ cursor.movetoFirst(); do { String cursorManufacturer = cursor.getString(0); //Checking for manufacturer in the List for(String manufacturerInList:manufacturerList){ if (!manufacturerInList.equals(cursorManufacturer)) manufacturerList.add(cursorManufacturer); } }while(cursor.movetoNext()); } // Return List of manufacturers from database return manufacturerList;}我希望每个制造商都在列表中.
我以某种方式无法使其正常工作.
我还是个新手.
谢谢你的帮助.
解决方法:
有两个问题:
>首先,当列表制造商InList为空时,它将不会进入for(String ManufacturerInList:manufacturerList){循环,因此它将永远不会在列表中添加任何条目.
>解决问题1后,它仍然无法正常工作,好像(!manufacturerInList.equals(cursorManufacturer))检查列表中的每个条目并在列表中可能多次添加不匹配的条目.
要解决此问题,您有两种选择.
选项1:用途包含为:
if (!manufacturerList.contains(cursorManufacturer)) { manufacturerList.add(cursorManufacturer); }选项2:使用matchFound布尔标志为:
String cursorManufacturer = cursor.getString(0); boolean matchFound = false; //Checking for manufacturer in the List for(String manufacturerInList:manufacturerList){ if (manufacturerInList.equals(cursorManufacturer)){ matchFound = true; break; } } if(!matchFound){ // <- doesn't exit in the List manufacturerList.add(cursorManufacturer); } 总结 以上是内存溢出为你收集整理的java-使用SQLOpenHelper获取ArrayList不起作用全部内容,希望文章能够帮你解决java-使用SQLOpenHelper获取ArrayList不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)