У меня есть фрагмент с несколькими кнопками, текстовым просмотром и списком.Обновить фрагмент TextView из адаптера ListView
Внутри CustomAdapter у меня есть метод onClick для удаления элемента из списка, когда они нажимают на изображение в пользовательском listview.
Однако эти товары связаны с ценами, и я хочу обновить текстовое представление, которое сидит в верхней части фрагмента, говоря «Всего».
Вот код.
(The по щелчку методом в адаптер ITEMLIST)
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();
}
});
Функция внутри моего фрагмента имени 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))));
}
Я получаю ошибку, когда я удалить элемент
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)
Я понимаю, что он говорит, что мое текстовое представление «не существует», но я не уверен, почему, как было объявлено в моем методе onViewCreated в начале фрагмента.
Если anyones ищет полный ответ:
final Context context = parent.getContext();
final FragmentManager fm = ((Activity) context).getFragmentManager();
final ItemList_Fragment itemList = (ItemList_Fragment)fm.findFragmentByTag("itemsListTag");
Выше было создана в моем методе GetView в адаптере, и ниже был примером того, как он был использован в OnClick также в адаптеры GetView
holder.remove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
_ItemObject itemToRemove = (_ItemObject) v.getTag();
remove(itemToRemove);
notifyDataSetChanged();
itemList.resetTotal();
}
});
Возможно ли, что вы могли бы немного расшириться? У меня возникли проблемы с реализацией его в моем ListAdapter. Извините – Noodelz
Я понял это :) Спасибо, что поставил меня на правильный путь! Ответ выше. – Noodelz