L'image ci-dessous montre les listView
de WorkDetailsHeures totales pas mis à jour lorsque listView sont supprimés
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 !
alors j'ai mis de deux façons? L'un est dans onActivityResult et l'autre dans listView click? –
vous pouvez définir une nouvelle fonction comme 'updateTotalHour()' alors vous pouvez l'appeler dans onActivityResult et à l'intérieur de clickview cliqué –