Android 创建保存recyclerView中项目数的TextView
我试图做的是检索recyclerView中的项目数并将其显示为文本。我不断收到相同的错误,这些错误可以在下面的代码中看到:Android 创建保存recyclerView中项目数的TextView,android,android-recyclerview,Android,Android Recyclerview,我试图做的是检索recyclerView中的项目数并将其显示为文本。我不断收到相同的错误,这些错误可以在下面的代码中看到: public class COM800s1 extends AppCompatActivity { private FirebaseFirestore db = FirebaseFirestore.getInstance(); private CollectionReference attendanceRef = db.collection("Attendance");
public class COM800s1 extends AppCompatActivity {
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference attendanceRef = db.collection("Attendance");
private AttendanceAdapter adapter;
private TextView attendanceNumbers;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_com800s1);
FloatingActionButton floatingActionButton = findViewById(R.id.button_add_session);
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(COM800s1.this,NewAttendanceRecord.class));
}
});
setUpRecyclerView();
}
private void setUpRecyclerView() {
final Query query = attendanceRef.whereEqualTo("sessionID", "5I0PLcpgmwdcjKLYLgkU").orderBy("userEmail", Query.Direction.ASCENDING);
FirestoreRecyclerOptions<Attendance> options = new FirestoreRecyclerOptions.Builder<Attendance>()
.setQuery(query, Attendance.class).build();
adapter = new AttendanceAdapter(options);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
attendanceNumbers = findViewById(R.id.attendanceNums);
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int positionView = ((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
attendanceNumbers.setText(Integer.toString(positionView)); //The TextView you want to update
}
});
// attendanceNumbers.setText((adapter.getItemCount() + " students have attended this session"));
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
adapter.deleteItem(viewHolder.getAdapterPosition());
}
}).attachToRecyclerView(recyclerView);
adapter.setSetOnItemClickListener(new AttendanceAdapter.OnItemClickListener() {
@Override
public void onItemClick(Attendance documentSnapshot, int position) {
}
});
}
@Override
protected void onStart () {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop(){
super.onStop();
adapter.stopListening();
}
}
在onCreate()
方法中添加此行
attendanceNumbers = findViewById(R.id.yourTextViewIDhere);
您缺少这一点,这就是它在
setText()
方法调用中显示null指针异常的方式。代码中的错误是您没有声明textviewattendanceNumbers
您必须使用此行声明它
attendanceNumbers = findViewById(R.id.YOUR_TEXTVIEW_ID_IN_XML_FILE);
在调用此方法之前
setUpRecyclerView();
就这样吧
attendanceNumbers = findViewById(R.id.YOUR_TEXTVIEW_ID_IN_XML_FILE);
setUpRecyclerView();
快乐编码
attendanceNumbers = findViewById(R.id.YOUR_TEXTVIEW_ID_IN_XML_FILE);
setUpRecyclerView();