Android 获取数据库中某些项目的重复条目!

Android 获取数据库中某些项目的重复条目!,android,database,sqlite,Android,Database,Sqlite,我正在开发一个android应用程序。其中我有幻灯片。我正在通过一个xml解析它们,解析之后,保存在SQLite数据库中。大多数幻灯片都被正确保存,但有时会发生两次保存的情况,即幻灯片中的每一张幻灯片都被保存两次,明显地,PK不同,但内容相同。这应该避免 部分代码在这里,我在这里获取幻灯片并尝试将它们存储在DB中 ArrayList<SlideShowItem> slideItems = null; slideItems=Utils.database.get

我正在开发一个android应用程序。其中我有幻灯片。我正在通过一个xml解析它们,解析之后,保存在SQLite数据库中。大多数幻灯片都被正确保存,但有时会发生两次保存的情况,即幻灯片中的每一张幻灯片都被保存两次,明显地,PK不同,但内容相同。这应该避免

部分代码在这里,我在这里获取幻灯片并尝试将它们存储在DB中

      ArrayList<SlideShowItem> slideItems = null;

      slideItems=Utils.database.getSlideItemOfUrl(Constants.StoriesTable,tempSlideShow.getFullStoryUrl().substring(0, index - 1), type);

                        if (slideItems == null) {
                            Log.d("store in DB: ", " when SlideItems == null ");

                            Log.d("SlideShow Title:   ", tempSlideShow.getTitle());
                            Log.d("SlideShow pub Date:   ", tempSlideShow.getPubDate());

                            slideItems = tempSlideShow.getSlideShow();
                            Utils.database.storeSlideItem(Constants.StoriesTable, myUrl,slideItems, type);
                            Utils.topStorySlidesArrayList = slideItems;
                            slideItems = null ;

                        } else {
                            Log.d("SlideShow Title:   ", tempSlideShow.getTitle());
                            Utils.topStorySlidesArrayList = slideItems;
                            slideItems = null ;
                        } 
数据库中函数storeSlideItem的代码为: 请告诉我任何能让我摆脱这个恼人问题的事情。感谢您的帮助

在DB for Replication of slides中,视图类似于:

1美国广播公司111

2 abc美国111

这是一张幻灯片中的一张。如果我在一个幻灯片放映中有3个幻灯片,我将在DB中获得6个条目,每个幻灯片保存两次。

使用HashSet而不是ArrayList

 public synchronized void storeSlideItem(String tableName, String, url,ArrayList<SlideShowItem> list, String type) {

    System.out.println("size of the Array list:   " + list.size());

    String newType = null;
    if (type == null) {
        newType = "List";
    }else{
        newType = type;
    }   

    ArrayList<SlideShowItem> newList = new ArrayList<SlideShowItem>();
    //newList = null;
    Iterator<SlideShowItem> iterator = list.iterator();

    while (iterator.hasNext())
    {
        SlideShowItem sSItem = iterator.next();
        if(!newList.contains(sSItem))
        {
            newList.add(sSItem);
        }  
    }

    try {
        for (int i = 0; i < newList.size(); i++) {
            SlideShowItem item = newList.get(i);
            String itemUrl = url + i;// Unique URL for the DB;
            String imgString = null;

            Log.e("Loop Counter", " time " + i);

            Drawable drawable = item.getImage();
            if (item.getBody() != null) {
                item.setBody(item.getBody().replace('\'', '`'));
                // replace as it create syntax error for storing data
            }
            if (item.getSubTitle() != null) {
                item.setSubTitle(item.getSubTitle().replace('\'', '`'));
            }

            if (drawable != null) {
                Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);

                byte[] b = baos.toByteArray();
                imgString = Base64.encodeBytes(b);
            }

            if (isOpen()) {
                myDB.execSQL("INSERT INTO " + tableName + "(" + column[1] + "," + column[2] + "," + column[3] + "," + column[4] + "," + column[6]
                        + "," + column[7] + ",type) VALUES('" + itemUrl + "','" + item.getSubTitle() + "','" + item.getBody() + "','"
                        + item.getImagePath() + "','" + item.getIndex() + "','" + imgString  + "','" + newType + "Slide')");


                if (item.getBody() != null) {
                    item.setBody(item.getBody().replace('`', '\''));// " ' "
                    // replace as it create syntax error for storing data
                }
                if (item.getSubTitle() != null) {
                    item.setSubTitle(item.getSubTitle().replace('`', '\''));
                }

                if (tableName.equals(Constants.StoriesTable)) {
                    item.setItemId(getItemID(tableName, itemUrl));
                    Utils.hashListStoriesIds.put(itemUrl, item.getItemId());

                    if (imgString != null) {
                        Utils.hashListImages.put(item.getItemId(), new Boolean(true));
                    } else {
                        Utils.hashListImages.put(item.getItemId(), new Boolean(false));
                    }
                }
            }   
        }
    } catch (Exception e) {
        Log.e("Error", "Exception: storeSlideItem type " + e.toString());
    } finally {
        closeConnection();
    }

}