2016-03-20 16 views
1

Bu yüzden ben garip bir şey fark ettiğimde benim app oluşturmak, silmek ve güncellemek gerçekleştiriyordu. yanı (Bir 'notu' sonra (Alarm & bildirim) gibi benzersiz kendi kimliğini kullanarak bunun için bir bildirim ile bir alarm ayarlamak oluşturduysanızApp - RecyclerView/SQLite strangely kadar hareket eden

ardından silmek için çalıştı: İşte benim durum:

Kanıt A iptal olarak) hiçbir şey olmazdı. Bildirim hala var, , ancak Günlüklerim iptal yöntemlerinin çağrıldığını gösteriyor.

Sergi B: Ben app yeniden Eğer

(çıkış sonra dönüş)notu hala orada.ve ardından, 'u silersem bildirim kaybolur. Yeniden başlatmayı denemeliyim.

DeleteItem yöntemi:

public void deleteItem(final int position, final RecyclerView rv) { 
    Log.d("RecyclerView", "deleteItem method called at: " + position + " on " + data.get(position).getTitle() + " of ID " + data.get(position).getID()); 
    // BUG position is the same - identical titles called - funky titles appearing from other positions 
    // BUG Other snackbar showing causes dismissal of original Snackbar and deletes note 
    final Info currentNote = data.get(position); 
    final int originalPosition = position; 

    data.remove(position); 
    // Removes Info object at specified position 

    // notifyDataSetChanged(); 
    notifyItemRemoved(position); 
    // Notifies the RV that item has been removed 

    /* HOW DOES ALL THIS WORK?? 
    As an ArrayList that contains all Info objects has been created in RecyclerAdapter, 
    calling the delete method and passing data.get(position) returns the Info object at that position 
    as every Info object is set in order to the RV item, which makes deleteNote in DB work 
    */ 

    Snackbar snackbar = Snackbar.make(rv, "Note Forgotten!", Snackbar.LENGTH_LONG) 
      // .make(View where Snackbar is shown, Message on Snackbar, LENGTH_INDEFINITE means Snackbar is shown until dismissed manually) 
      // NOTE If not wrapped in COORDINATORLAYOUT, SWIPE TO DISMISS DOES NOT WORK 
      .setAction("UNDO", new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Log.d("RV Adapter", "Note replaced on: " + currentNote.getTitle()); 
        Snackbar.make(rv, "Note replaced!", Snackbar.LENGTH_LONG).show(); 
        data.add(originalPosition, currentNote); 
        notifyItemInserted(originalPosition); 
       } 
      }); 
    // Customizing Snackbar 
    // Changing message text color 
    snackbar.setActionTextColor(Color.RED); 

    // Changing action button text color 
    View sbView = snackbar.getView(); 
    TextView textView = (TextView) sbView.findViewById(android.support.design.R.id.snackbar_text); 
    textView.setTextColor(Color.YELLOW); 

    snackbar.setCallback(new Snackbar.Callback() { 
     @Override 
     public void onDismissed(Snackbar snackbar, int event) { 
      switch (event) { 
       case DISMISS_EVENT_ACTION: 
        // Snackbar was dismissed via click on action button 
        break; 

       case DISMISS_EVENT_SWIPE: 
        // Snackbar was dismissed via manual swipe 
        break; 

       case DISMISS_EVENT_MANUAL: 
        // Snackbar was dismissed via dismiss() method called 
        break; 

       case DISMISS_EVENT_CONSECUTIVE: 
        // Snackbar was dismissed via another Snackbar being shown 
        break; 

       case DISMISS_EVENT_TIMEOUT: 
        Log.d("RV Adapter", "Note deleted on: " + currentNote.getTitle()); 
        // Snackbar was dismissed via timeout 
        DBInfo dbInfo = new DBInfo(context); 
        dbInfo.deleteNote(currentNote); 
        // Deletes RV item/position's Info object 

        boolean alarmSet = (PendingIntent.getBroadcast(context, currentNote.getID(), 
          new Intent(context, AlarmReceiver.class), PendingIntent.FLAG_UPDATE_CURRENT) != null); 

        Log.d("RecyclerAdapter", "Item: " + currentNote.getTitle() + " of ID: " + currentNote.getID() + " has Alarm Set value of " + alarmSet); 

        // if statement to determine if there is an alarm set 
        if (alarmSet) { 
         // Cancel Alarm 
         // Get intent originally used to invoke AlarmReceiver.class 
         Intent cancelIntent = new Intent(context, AlarmReceiver.class); 
         cancelIntent.putExtra("Purpose", "Cancel Alarm"); 
         Log.d("RecyclerAdapter", "PendingIntent cancelled of ID: " + currentNote.getID()); 
         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, currentNote.getID(), cancelIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
         // Grab same PendingIntent that was used to set Alarm 
         AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
         alarmManager.cancel(pendingIntent); 
         Log.d("RecyclerAdapter", "Alarm Cancelled on: " + currentNote.getTitle()); 

         NotificationManager manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
         manager.cancel(currentNote.getID()); 
         Log.d("RecyclerAdapter", "Notification Cancelled on: " + currentNote.getTitle()); 
        } 
      } 
     } 
    }); 

    snackbar.show(); 
} 

Benim Kayıtlar ... Sergi A için

: Belge B için

03-20 19:05:26.912 32245-32245/owensetiawan.friendlymatch.todolist  D/insertNewNote method: Position at: 4 
03-20 19:05:26.912 32245-32245/owensetiawan.friendlymatch.todolist D/DBInfo Owen: Insert method called. 
03-20 19:05:26.942 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null 
03-20 19:05:26.972 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called! 
03-20 19:05:26.972 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Deep 
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist D/AbsListView: Get MotionRecognitionManager 
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist E/MotionRecognitionManager: mSContextService = [email protected] 
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist E/MotionRecognitionManager: motionService = [email protected]3ffac67 
03-20 19:05:27.062 32245-32245/owensetiawan.friendlymatch.todolist E/MotionRecognitionManager: motionService = [email protected]3ffac67 
03-20 19:05:27.102 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{e75147b V.E...... R.....I. 0,0-0,0} 
03-20 19:05:27.122 32245-32245/owensetiawan.friendlymatch.todolist E/ViewRootImpl: sendUserActionEvent() mView == null 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.132 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.182 32245-32259/owensetiawan.friendlymatch.todolist D/mali_winsys: new_window_surface returns 0x3000, [1592x2395]-format:1 
03-20 19:05:27.232 32245-32245/owensetiawan.friendlymatch.todolist W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView) 
03-20 19:05:27.292 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1 
03-20 19:05:27.292 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.302 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: Current page list: 
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #0: page 1393 
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #1: page 1394 
03-20 19:05:27.312 32245-32245/owensetiawan.friendlymatch.todolist I/ViewPager: #2: page 1395 
03-20 19:05:28.042 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/We have liftoff!: DPD Listener called! 
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/onDateSet method: Date set for: 20/2/2016 
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/Alarm: Set Alarm method called on: !20/2/2016 
03-20 19:05:28.132 32245-32245/owensetiawan.friendlymatch.todolist D/DBInfo: Note retrieved ID of: 5 
03-20 19:05:28.242 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null 
03-20 19:05:28.262 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #1 mView = android.widget.LinearLayout{d7b9729 V.E...... ......I. 0,0-0,0} 
03-20 19:05:28.272 32245-32245/owensetiawan.friendlymatch.todolist E/ViewRootImpl: sendUserActionEvent() mView == null 
03-20 19:05:28.312 32245-32259/owensetiawan.friendlymatch.todolist D/mali_winsys: new_window_surface returns 0x3000, [928x176]-format:1 
03-20 19:05:28.322 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=1 
03-20 19:05:28.342 32245-32245/owensetiawan.friendlymatch.todolist W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView) 
03-20 19:05:29.172 32245-32245/owensetiawan.friendlymatch.todolist D/AlarmReceiver: Deep called on: 20/3/2016 with ID of: 5 
03-20 19:05:29.172 32245-32245/owensetiawan.friendlymatch.todolist D/AlarmReceiver: Receiver called! 
03-20 19:05:30.312 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null 
03-20 19:05:31.902 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
03-20 19:05:32.312 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
03-20 19:05:32.442 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerView: deleteItem method called at: 3 on Deep of ID 0 
03-20 19:05:35.772 32245-32245/owensetiawan.friendlymatch.todolist D/RV Adapter: Note deleted on: Deep 
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/DBInfo: deleteNote method called on: Deep 
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Item: Deep of ID: 0 has Alarm Set value of true 
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: PendingIntent cancelled of ID: 0 
03-20 19:05:35.792 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Alarm Cancelled on: Deep 
03-20 19:05:35.802 32245-32245/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Notification Cancelled on: Deep 
03-20 19:05:39.852 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processKey 0 
03-20 19:05:39.952 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processKey 1 
03-20 19:05:40.662 32245-32245/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null 

:

03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/DBInfo: Columns created: [_id, note_title, note_content] 
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/DBHelper Owen: Loading entries: 4 Date: Sun Mar 20 21:30:56 GMT+08:00 2016 
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/ItemTouchHelper: Callback called! 
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/Activity: performCreate Call Injection manager 
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist I/InjectionManager: dispatchOnViewCreated > Target : owensetiawan.friendlymatch.todolist.MainActivity isFragment :false 
03-20 21:30:56.382 31168-31168/owensetiawan.friendlymatch.todolist D/SecWifiDisplayUtil: Metadata value : SecSettings2 
03-20 21:30:56.392 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{1489836 I.E...... R.....ID 0,0-0,0} 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called! 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Factory reset phone 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called! 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Supermarket 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called! 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Keepa 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onCreateVH called! 
03-20 21:30:56.412 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: onBindVH called: Deep 
03-20 21:30:56.432 31168-31183/owensetiawan.friendlymatch.todolist D/mali_winsys: new_window_surface returns 0x3000, [1440x2560]-format:1 
03-20 21:30:56.442 31168-31168/owensetiawan.friendlymatch.todolist I/InjectionManager: dispatchCreateOptionsMenu :owensetiawan.friendlymatch.todolist.MainActivity 
03-20 21:30:56.442 31168-31168/owensetiawan.friendlymatch.todolist I/InjectionManager: dispatchPrepareOptionsMenu :owensetiawan.friendlymatch.todolist.MainActivity 
03-20 21:30:56.442 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 96 - 0, 0) vi=Rect(0, 96 - 0, 0) or=1 
03-20 21:30:56.462 31168-31168/owensetiawan.friendlymatch.todolist W/DisplayListCanvas: DisplayListCanvas is started on unbinded RenderNode (without mOwningView) 
03-20 21:30:56.502 31168-31168/owensetiawan.friendlymatch.todolist I/Timeline: Timeline: Activity_idle id: [email protected] time:60508201 
03-20 21:30:56.742 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: #3 mView = null 
03-20 21:30:57.292 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 0 
03-20 21:30:57.462 31168-31168/owensetiawan.friendlymatch.todolist D/ViewRootImpl: ViewPostImeInputStage processPointer 1 
03-20 21:30:57.602 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerView: deleteItem method called at: 3 on Deep of ID 6 
03-20 21:31:00.942 31168-31168/owensetiawan.friendlymatch.todolist D/RV Adapter: Note deleted on: Deep 
03-20 21:31:00.952 31168-31168/owensetiawan.friendlymatch.todolist D/DBInfo: deleteNote method called on: Deep 
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Item: Deep of ID: 6 has Alarm Set value of true 
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: PendingIntent cancelled of ID: 6 
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Alarm Cancelled on: Deep 
03-20 21:31:00.962 31168-31168/owensetiawan.friendlymatch.todolist D/RecyclerAdapter: Notification Cancelled on: Deep 

Not nasıl Derin gösterir iki kere yani , öğesinin silinmemesinin yanı sıra, iki Kimliğin Alarm Kümesi için true döndürmesi gerçeği.

Aklımı mı kaybediyorum? Bilgisayarımı yeniden başlatmalı mıyım? Android hatası mı? ?????????????????????????????????????????????????? ???????????? Herhangi bir cevap sonsuz teşekkürlerimi alacaktır. Eğer sadece pozisyon ekranda var için

getPosition() 

sonra ilgilidir kullanıyorsanız

+0

türlü çözümü arayacak? – sasha

+0

Henüz bir şey yok maalesef. –

cevap

0

, konumunuz senkronize değil bir şans (şu anda pozisyon alıyoruz nasıl emin değilim) bulunmaktadır Koleksiyondaki pozisyon değil.

Sen RecyclerView tarafından kullanılan düzen yöneticisi bir başvuru yapmanız ve ardından henüz

GridLayoutManager layoutManager = ((GridLayoutManager)mRecyclerView.getLayoutManager()); 
int position = layoutManager.findFirstVisibleItemPosition() + position; 
+0

Şu anda onBindViewHolder'da (int position) konumunu alıyorum. Geç cevap verdiğim için özür dilerim. –

İlgili konular