Ich habe derzeit ein Fragment mit ein paar Schaltflächen, eine Textansicht und eine Listenansicht.Update Fragment TextView von ListView Adapter
Innerhalb des CustomAdapter habe ich eine onClick-Methode, um das Element aus der Listview zu entfernen, wenn sie auf ein Bild in der benutzerdefinierten Listenansicht klicken.
Allerdings sind diese Elemente mit Preisen verbunden, und ich möchte eine Textansicht aktualisieren, die an der Spitze des Fragments sitzt und sagt "Total".
Hier ist ein Code.
(Die auf Click-Methode im ItemList Adapter)
holder.remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_ItemObject itemToRemove = (_ItemObject) v.getTag();
remove(itemToRemove);
notifyDataSetChanged();
ItemList_Fragment itemlist = new ItemList_Fragment();
itemlist.resetTotal();
}
});
Die Funktion in meinem Fragment namens ItemList_Fragment
public void resetTotal() {
total = 0;
for (int i = 0; i < objects.size(); i++) {
total = total + (objects.get(i).getItemPrice() * objects.get(i).getItemQuantity());
}
quoteTotal.setText("$" + String.valueOf(String.format("%.2f", total + (total * 0.15))));
}
Die Störung, die ich erhalte, wenn ich entfernen Sie ein Element
05-09 10:15:54.172 5171-5171/quotenowv2 E/AndroidRuntime: FATAL EXCEPTION: main
Process: quotenowv2, PID: 5171
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at quotenowv2.ItemList_Fragment.resetTotal(ItemList_Fragment.java:242)
at quotenowv2._ItemListAdapter$1.onClick(_ItemListAdapter.java:81)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21153)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Ich verstehe, dass es meine Textansicht "noch nicht existiert", aber ich bin mir nicht sicher, warum es in meiner onViewCreated-Methode am Anfang des Fragments deklariert wurde.
Wenn anyones für die vollständige Antwort suchen:
final Context context = parent.getContext();
final FragmentManager fm = ((Activity) context).getFragmentManager();
final ItemList_Fragment itemList = (ItemList_Fragment)fm.findFragmentByTag("itemsListTag");
Die oben in meinem getView Verfahren innerhalb des Adapters einzurichten, und die unten war ein Beispiel dafür, wie es auch in der onClick verwendet wurde innerhalb von die Adapter GetView
holder.remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_ItemObject itemToRemove = (_ItemObject) v.getTag();
remove(itemToRemove);
notifyDataSetChanged();
itemList.resetTotal();
}
});
Ist es möglich, dass Sie dies leicht erweitern könnten? Ich habe Probleme, es in meinen ListAdapter zu implementieren. Sorry – Noodelz
Ich habe es herausgefunden :) Danke, dass du mich auf den richtigen Weg gebracht hast! Die Antwort ist oben. – Noodelz