Медицинское управление Java - NullPointerException и IndexoutOfBoundSexception в поиске истории выставления счетов [закрJAVA

Программисты JAVA общаются здесь
Anonymous
Медицинское управление Java - NullPointerException и IndexoutOfBoundSexception в поиске истории выставления счетов [закр

Сообщение Anonymous »

Привет всем,
Я разработал полную систему медицинского управления с помощью Java. Система включает в себя модули для пациентов, врачей и администраторов. Вот краткий обзор функциональности: < /p>
пациенты могут: < /strong> < /p>

Войти в < /li>
Занима в книгу с конкретными врачами (например, кардиолог - доктор Джон Смит) < /li>

Просмотреть и обновить их профиль < /li>
< /ol>
Докторы могут: < /strong> < /p>

Войти < /li>
Посмотреть и принять запросы на назначение < /li>
. рецепты и лечение < /li>
генерировать счета для пациентов < /li>
Просмотреть историю лечения путем выбора пациента < /li>
Просмотр их профиля < /li>
< /ol>
Admins может: < /press> < /p>


. Система < /li>
< /ul>
Все в системе работает отлично, кроме модуля истории выставления счетов. Когда я перейду на страницу истории выставления счетов, я могу видеть только заголовок (например, «история выставления счетов»), но записи не отображаются. Журналы указывают следующие проблемы:
nullpointerexception
indexoutofboundsexception
Я попробовал следующее:





Проверка подключения к базе данных и SQL -запросы < /li>
Восстановление всего проекта с нуля < /li>
Зарегистрирование всех промежуточных шагов для отслеживания того, что неудача происходит < /li>
< /ol>
, несмотря на эти усилия, проблема сохраняется. Похоже, что мой код не получает данных из базы данных должным образом, или, возможно, объекты не инициализируются, как ожидалось. SETS? Необходима) Настройка?package com.example.yourhealthpartner;

import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.Query;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

public class PatientBillsActivity extends AppCompatActivity {

private static final String TAG = "PatientBillsActivity";
// --- THIS IS THE FIX ---
// Declare recyclerView as a class member directly, not inside onCreate
private RecyclerView recyclerView;
private BillsAdapter adapter;
private List billList;
private FirebaseFirestore db;
private FirebaseAuth mAuth;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_patient_bills); // Ensure this XML layout exists

db = FirebaseFirestore.getInstance();
mAuth = FirebaseAuth.getInstance();

// Initialize recyclerView after setContentView
// This ID MUST match the RecyclerView ID in activity_patient_bills.xml
recyclerView = findViewById(R.id.patient_billing_history_recyclerview);

// Now that recyclerView is guaranteed not null (if the ID exists), set its layout manager
if (recyclerView != null) { // Added a null check for robustness
recyclerView.setLayoutManager(new LinearLayoutManager(this));
} else {
Log.e(TAG, "RecyclerView not found in layout! Check R.id.patient_billing_history_recyclerview in activity_patient_bills.xml");
// Optionally, show a Toast or message to the user that something went wrong
// Toast.makeText(this, "Error displaying bills: RecyclerView not found.", Toast.LENGTH_LONG).show();
return; // Stop further execution if RecyclerView is null
}

billList = new ArrayList();
adapter = new BillsAdapter(billList);
recyclerView.setAdapter(adapter);
}

@Override
protected void onResume() {
super.onResume();
loadBills();
}

private void loadBills() {
if (mAuth.getCurrentUser() == null) return;
String patientId = mAuth.getCurrentUser().getUid();
Log.d(TAG, "Fetching bills for patientId: " + patientId);

db.collection("bills")
.whereEqualTo("patientId", patientId)
.orderBy("billDate", Query.Direction.DESCENDING)
.get()
.addOnSuccessListener(queryDocumentSnapshots -> {
billList.clear();
for (QueryDocumentSnapshot document : queryDocumentSnapshots) {
billList.add(document.getData());
}
adapter.notifyDataSetChanged();
})
.addOnFailureListener(e -> Log.w(TAG, "Error loading bills", e));
}
}
< /code>
Я использовал этот код, и мой код XML - < /p>





```


Подробнее здесь: https://stackoverflow.com/questions/796 ... undsexcept

Вернуться в «JAVA»