我有一個recyclerview,它在每一行都有一個edittext。
行數在50到60之間。我從服務器獲取行數。
我如何獲得每個edittext的文本?
這個動作可以給我異常錯誤嗎?從recyclerview的每一行獲取數據
對不起我的英語不好。
我有一個recyclerview,它在每一行都有一個edittext。
行數在50到60之間。我從服務器獲取行數。
我如何獲得每個edittext的文本?
這個動作可以給我異常錯誤嗎?從recyclerview的每一行獲取數據
對不起我的英語不好。
您可以在適配器和視圖持有人實現這個邏輯:
class YourAdapter extend RecyclerView.Adapter<YourAdapter.ViewHolder> {
List<String> yourEditTextContents = ...;
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.yourEditText.setTag(position);
holder.yourEditText.setText(yourEditTextContents.get(position));
}
class ViewHolder extend RecyclerView.ViewHolder {
EditText yourEditText;
public ViewHolder(View root){
...
yourEditText = root.findViewById();
yourEditText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
int position = (int)yourEditText.getTag();
yourEditTextContents.set(position, s.toString());
}
});
}
}
}
之後,你可以編輯文本的文本只需使用:
yourEditTextContents.get(position)
我該如何獲得每個edittext的文本?
您無法獲得全部50個文字。您只能獲取當前屏幕上的文字的值。當您使用RecyclerView
時,您只有EditText
對象在屏幕上可見。當您滾動列表時,EditText
被重複使用,即使您有50行,也不會有50 EditText
對象。
如何將數據加載到那些EditText
s?您已將所有數據加載到EditText
之前。如果您想在用戶鍵入內容後獲取數據,請使用OnTextChangedListener
獲取已更改的文本,然後更新模型。
這個動作可以給我異常錯誤嗎?
再次,沒有50 EditText
s,所以這是不可能的。如果您確實需要從視圖中獲取值,則只能從視圖中獲取值。這不會給你任何例外或錯誤。