2012-03-16 8 views
0

ブラックベリーの永続ストアから取得したハッシュテーブルのデータをいくつか追加していますが、各データのユースケースは永続的なstore.Nowにいくつかのデータを追加しています私はそれを削除/更新し、その日付の新しいデータを追加する必要がありますが、問題は、その日付の古いデータを削除せずに同じ日付にデータが追加されることです。ハッシュテーブルからデータを削除する

public Hashtable getUserInfo() { 
    Hashtable eventBean = null; 
    store = PersistentStore.getPersistentObject(0xeb263c815d29213aL); 
    synchronized (store) { 
     eventBean = (Hashtable) store.getContents(); 
     if (eventBean == null) { 
      eventBean = new Hashtable(); 
     } 
    } 
    return eventBean; 
} 

private Hashtable getEvents(String usrDate, String timezone) { 
    listUserEvents = getUserInfo(); 
    listEvents = new Vector(); 
    Enumeration events = eventList.items(); 
    while (events.hasMoreElements()) { 
     System.out.println("in while"); 
     Event event = (Event) events.nextElement(); 

     if (eventList.isSupportedField(Event.START) && 
      event.countValues(Event.START) > 0) 
     { 
      long start = event.getDate(Event.START, 0); 
      SimpleDateFormat sdf = 
       new SimpleDateFormat("MMM dd,yyyy HH:mm"); 
      String dateString = sdf.formatLocal(start); 

      SimpleDateFormat sdf1 = 
       new SimpleDateFormat("MMM dd,yyyy"); 
      String date = sdf1.formatLocal(start); 
      System.out.println("dates are :" +date+ "user" +usrDate); 
      if (usrDate.equalsIgnoreCase(date)) { 
       System.out.println("dates are equal:" +date); 
       EventsBean eventBean = new EventsBean(); 

       if (eventList.isSupportedField(Event.END) && 
        event.countValues(Event.END) > 0) 
       { 
        long end = event.getDate(Event.END, 0); 
        SimpleDateFormat sdform = 
         new SimpleDateFormat("MMM dd, yyyy HH:mm"); 
        String dateString1 = sdform.formatLocal(end); 
        eventBean.setStartDate(dateString); 
        eventBean.setEndDate(dateString1); 
       } 


       listEvents.addElement(eventBean); 
       System.out.println("the size bf hash is" + listEvents.size()); 
       // changed it 
       if (listUserEvents.containsKey(usrDate)) { 
        Vector info = (Vector) listUserEvents.get(usrDate); 
        System.out.println("the size in getEvents is" + 
             info.size()); 
        info.addElement(eventBean); 
        System.out.println("vector size info is" + info.size()); 
        listUserEvents.put(usrDate, info); 
       } else { 
        listUserEvents.put(usrDate, listEvents); 
       } 
      } else { 
       // Dialog.alert("not equal"); 
      } 
     } 
    } 
} 

答えて

0

次のコードを使用して、位置iのベクトルから要素を削除します。

vector.removeElementAt(i); 

次に、このベクターを永続ストアに追加します。毎回ベクトルを更新し、そのベクトルをストアに追加します。

1

は、あなたは、単に日付のために保存されたベクターから古いデータをクリアする必要があります。

  // changed it 
      if (listUserEvents.containsKey(usrDate)) { 
       Vector info = (Vector) listUserEvents.get(usrDate); 
       System.out.println("the size in getEvents is" + 
            info.size()); 
       info.removeAllElements(); // <=== clears the old data 
       info.addElement(eventBean); 
       System.out.println("vector size info is" + info.size()); 
       listUserEvents.put(usrDate, info); 
      } else { 
       listUserEvents.put(usrDate, listEvents); 
      } 
+0

()私が好き持っているので、解決することができない、私は()をクリア取得していますベクトル下の方法ではありません明確なベクトル情報=(ベクトル)listUserEvents.get(usrDate); ベクトルに型キャストされたHashtable – user1195292

+0

@ user1195292 - それは残念です。私は、 'Vector'のBlackBerry APIに' clear() 'メソッドが含まれていないことを忘れていました。代わりに 'removeAllElements()'を使用してください。私は表示するコードを更新しました。 –

関連する問題