2015-12-27 1 views
0

L'image ci-dessous montre les listView de WorkDetailsHeures totales pas mis à jour lorsque listView sont supprimés

List View

J'utilise footer pour afficher la mise en page totale heures et footer layout affichage deux boutons

Lorsque la troisième listView est supprimé, il suppose d'afficher 7 heures ((18: 0 de la deuxième liste -10: 00 de la première liste) -1). Mais il affiche toujours 18:32

WorkDetails

listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { // long press on listView 
       public boolean onItemLongClick(final AdapterView<?> p, View v, final int po, long id) { 
        AlertDialog.Builder builder = new AlertDialog.Builder(WorkDetailsTable.this); 
        builder.setTitle("Delete"); 
        builder.setMessage("Are you sure you want to delete?"); 
        builder.setIcon(android.R.drawable.ic_dialog_alert); 
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int ii) { 
          objMyCustomBaseAdapter.removeItem(po); 
         } 

        }); 
      }); 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { // receive from Activity B and populate ListView A 
     if (resultCode == RESULT_OK) { 
      if (requestCode == PROJECT_REQUEST_CODE) { 
       ReceiveProject = data.getStringExtra("Project"); 
       ReceiveDescription = data.getStringExtra("Description"); 
       ReceiveProgress = data.getIntExtra("progress", 0); 
       ReceiveTimeIn = data.getStringExtra("TimeIn"); 
       ReceiveTimeOut = data.getStringExtra("TimeOut"); 

       int a = SplitTime(objMyCustomBaseAdapter.getFistTime()); // calculate timeIn 
       int b = SplitTime(objMyCustomBaseAdapter.getLastTime()); //calculate timeOut 
       long difference = 0; 
       if (a > b) { 
        difference = (b + (24 * 60) - a) - (1 * 60); 
        int minutes = (int) (difference % 60); 
        int hours = (int) ((difference/60) % (24 * 60)); 
        totalHours.setText(("Total hours : " + hours + ":" + minutes)); 

       } else { 
        difference = (b - a) - (1 * 60); 
        int minutes = (int) (difference % 60); 
        int hours = (int) ((difference/60) % (24 * 60)); 
        totalHours.setText(("Total hours : " + hours + ":" + minutes)); 
       } 

      } 
     } 
      } 
     } 

MyCustomBaseAdapter

 public void removeItem(int position) { 
      searchArrayList.remove(position); 
      addOrRemoveFooter(); 
      this. notifyDataSetChanged(); 
     } 

    public void addOrRemoveFooter(){ 
      if(searchArrayList.size() == 0 && listview.getFooterViewsCount() > 0){ // if no listView 
       listview.removeFooterView(footer); 
       listview.removeFooterView(footerLayout); 
      }else if(listview.getFooterViewsCount() == 0 && searchArrayList.size() > 0){ // if exists listView 
       listview.addFooterView(footer); 
       listview.addFooterView(footerLayout); 
      } 
     } 

    public String getFistTime() { 
     SearchResults firstTime = this.searchArrayList.get(0); 
     return firstTime.getTimeIn(); 
     } 

    public String getLastTime() { 
     SearchResults lastTime = this.searchArrayList.get(searchArrayList.size() - 1); 
     return lastTime.getTimeOut(); 
    } 

Si j'ajoute la nouvelle liste à listView, le total des heures seront mis à jour, mais pas pour listView supprimer .

Dites-moi comment je dois mettre à jour le nombre total d'heures lorsque la liste est supprimée. Merci beaucoup !

Répondre

0
listview.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { // long press on listView 
        public boolean onItemLongClick(final AdapterView<?> p, View v, final int po, long id) { 
         ... 
         builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int ii) { 
           objMyCustomBaseAdapter.removeItem(po); 
           // calculate total hour then update it in here 
          } 

         }); 
}); 
+0

alors j'ai mis de deux façons? L'un est dans onActivityResult et l'autre dans listView click? –

+0

vous pouvez définir une nouvelle fonction comme 'updateTotalHour()' alors vous pouvez l'appeler dans onActivityResult et à l'intérieur de clickview cliqué –