У меня есть коллекция, в которой есть список документов.
Теперь я хотел бы отобразить список документов в виде интерактивных элементов в виде списка. Пока что у меня есть только часть Displaying.
Однако, как только элементы отображаются, как сделать каждый элемент кликабельным, чтобы значение выбранного элемента сохранялось в виде строки и передавалось следующему действию?
Это не дубликат, поскольку возможный дублирующий вопрос не дает поставщикам ответов, соответствующих моим конкретным потребностям.
XML-код:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AttendanceCP">
<ListView
android:id="@+id/main_list"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Java-код:
public class AttendanceCP extends AppCompatActivity
{
private static final String TAG = "AttendanceCP";
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference dbUsers = db.collection("Faculty");
private ListView mainlist;
private String email="";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_attendance_cp);
mainlist=findViewById(R.id.main_list);
email=PrefUtilities.with(this).getFacultyEmail();
final DocumentReference dbDocs = dbUsers.document(email);
dbDocs.addSnapshotListener(this, new EventListener<DocumentSnapshot>()
{
@Override
public void onEvent(@Nullable DocumentSnapshot documentSnapshot, @Nullable FirebaseFirestoreException e)
{
if (documentSnapshot.exists())
{
String Dept = documentSnapshot.getString(DEPT_NAME);
Attendance(Dept);
}
}
});
}
public void Attendance(String Dept)
{
if(Dept.equals("CSE"))
{
dbUsers=db.collection("CSE");
}
if(Dept.equals("Civil"))
{
dbUsers=db.collection("Civil");
}
dbUsers.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>()
{
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task)
{
ArrayList<String> paper=new ArrayList<>();
if (task.isSuccessful())
{
for (QueryDocumentSnapshot document : task.getResult())
{
paper.add(document.getId());
}
Log.d(TAG, paper.toString());
}
else
{
Log.d(TAG, "Error getting documents: ", task.getException());
}
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<>(AttendanceCP.this,android.R.layout.simple_list_item_1, paper);
mainlist.setAdapter(arrayAdapter);
}
});
}
}