簡體   English   中英

Recyclerview中的多個edittext

[英]Multiple edittext in Recyclerview

我們正在制作一個可以分攤團體費用的應用程序。 為此,您可以選擇要與之共享下一份賬單的人。 我制作了一種“列表視圖項”,其中包含每個用戶的“借方”和“貸方”字段,並根據有多少人共享付款,將這些項添加到Recyclerview中。 但是,現在我試圖讀取在這些edittext中輸入的所有值,但我不知道如何。 在recyclerview中生成列表的代碼如下:

private void initRecyclerView() {
    rvTransactions = (RecyclerView) findViewById(R.id.rvTransactions);
    lmTransactions = new LinearLayoutManager(this);
    rvTransactions.setLayoutManager(lmTransactions);
    transactionAdapter = new RecyclerView.Adapter<CustomViewHolder>() {
        @Override
        public CustomViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
            View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_item_transaction, viewGroup, false);
            return new CustomViewHolder(view);
        }

        @Override
        public void onBindViewHolder(CustomViewHolder viewHolder, int i) {
            viewHolder.noticeSubject.setText(participatingUsers.get(i).getFirstname() + " " + participatingUsers.get(i).getLastname());
        }

        @Override
        public int getItemCount() {
            return participatingUsers.size();
        }

    };
    rvTransactions.setAdapter(transactionAdapter);
}

private class CustomViewHolder extends RecyclerView.ViewHolder {

    private TextView noticeSubject;
    private EditText userDebt,userCredit;

    public CustomViewHolder(View itemView) {
        super(itemView);

        noticeSubject = (TextView) itemView.findViewById(R.id.tvTransactionUser);
        userCredit = (EditText) findViewById(R.id.etTransactionPayed);
        userDebt = (EditText) findViewById(R.id.etTransactionOwes);
    }
}

PartitioningUsers對象是用戶列表。 用戶具有以下字段:

private int id;
private boolean isSelected;
private String firstname, lastname, email, password, api_key, creditcardnumber;

這是視圖的樣子,您可以看到動態添加的“已付款”和“欠款”字段

我希望能夠為所有用戶獲取在“已付”和“欠”編輯文本中輸入的值。

任何幫助將非常感激。

循環訪問RecyclerView的childCount並檢查以確保您閱讀的項目是CustomViewHolder類型,將其轉換為該類型並讀取EditText值。 就像是:

 public void printAllEditTextValues(){
     int childCount = rvTransactions.getChildCount(); 
     for(int i = 0; i < childCount; i++){
         if(rvTransactions.findViewHolderForLayoutPosition(i) instanceOf CustomViewHolder){
           CustomViewHolder childHolder = (CustomViewHolder) rvTransactions.findViewHolderForLayoutPosition(i);

           Log.d("EDIT_TEXT_1" , childHolder.userCredit.getText().toString());
           Log.d("EDIT_TEXT_2" , childHolder.userDebt.getText().toString());
         }
     }

您的適配器缺少您的編輯文本的itemView.findViewById(int),請使用:

private class CustomViewHolder extends RecyclerView.ViewHolder {

    private TextView noticeSubject;
    private EditText userDebt,userCredit;

    public CustomViewHolder(View itemView) {
        super(itemView);

        noticeSubject = (TextView) itemView.findViewById(R.id.tvTransactionUser);
        userCredit = (EditText) itemView.findViewById(R.id.etTransactionPayed);
        userDebt = (EditText) itemView.findViewById(R.id.etTransactionOwes);
    }
}

希望這會有所幫助,祝您好運,並祝您編程愉快!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM