亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

計算 RecyclerView 顯示的項數并放入一個 TextView

計算 RecyclerView 顯示的項數并放入一個 TextView

繁星coding 2021-08-25 09:46:50
目前,我可以在我的RecyclerView. 我想要做的是計算這些項目中有多少。我的項目保存在CardView. 我不想計算或求和任何特定字段,只想計算實際項目的數量。這是我的代碼,我嘗試使用getItemCount()方法設置它并將其附加到 TextView 并在 RecyclerView 之外顯示。這對我不起作用:public class COM800s1 extends AppCompatActivity {private FirebaseFirestore db = FirebaseFirestore.getInstance();private CollectionReference attendanceRef = db.collection("Attendance");private AttendanceAdapter adapter;private Context context;private TextView attendanceNumbers;private int counter;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_com800s1);    attendanceNumbers = findViewById(R.id.attendanceNums);    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);   //counter = adapter.getItemCount();   //attendanceNumbers.setText("Currently " +counter+ " 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;        }
查看完整描述

3 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

如果您試圖將counter變量作為全局變量并在回調之外使用它,那將始終是null因為正如@Vinnie 在他的回答中提到的那樣,數據尚未完成加載。真正發生的事情是您試圖從數據庫中獲取數據并立即使用它,而counter變量的初始值為0. 然后,當從數據庫中獲取數據完成時,它會更改計數器的值,但不會再次讀取。為了解決這個問題,getItemCount()在你的適配器類中使用你的方法的結果將它的值設置為TextView.


查看完整回答
反對 回復 2021-08-25
?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

如果您想獲取您的 recyclerView 列表,只需在您的 recyclerView 適配器中創建一個靜態方法,然后在其中返回您的列表。


例如:


public static List<modelOfYourList> getCount(){

   return yourAdapterList;

}


查看完整回答
反對 回復 2021-08-25
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

也許在你的AttendanceAdapter課堂上添加這樣的東西?


我看了一下FirestoreRecyclerOptions類,它公開了一個getSnapshots()方法。這將返回 a ObservableSnapshotArray,而后者又從 擴展而來Base ObservableSnapshotArray,它公開了一個size()方法。


class AttendanceAdapter extends FirestoreRecyclerAdapter<Attendance, AttendanceAdapter.AttendanceHolder>{

    private FirestoreRecyclerOptions<Attendance> options;


    public AttendanceAdapter(@NonNull FirestoreRecyclerOptions<Attendance> options)

    {

        super(options);

        this.options = options;

    }


    @Override

    public int getItemCount()

    {

        final int count = options.getSnapshots() != null 

            ? options.getSnapshots().size() 

            : 0;


        return count;

    }


查看完整回答
反對 回復 2021-08-25
  • 3 回答
  • 0 關注
  • 216 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號