私のプロジェクトでは、recyclerview
の私のプロジェクトeditext
フィールド(価格のcarname)で、click
を保存するとすべてのフィールド値をstring
のリストに入れる必要があるときにもスクロールした値を入れ替えた後に値を入力しました。ここに私のコードです。recyclerviewのeditext値を文字列のリスト
private class PricesAdapter extends RecyclerView.Adapter<PricesAdapter.MyViewHolder> {
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_cars_type_item, parent, false);
return new MyViewHolder(layoutView);
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.tvCarType.setText(carsList.get(position));
holder.edtPrice.setText("");
holder.edtPrice.setTag(position);
}
@Override
public int getItemCount() {
return carsList.size();
}
@Override
public int getItemViewType(int position) {
return super.getItemViewType(position);
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView tvCarType;
EditText edtPrice;
public MyViewHolder(View itemView) {
super(itemView);
tvCarType=(TextView)itemView.findViewById(R.id.tvCarType);
edtPrice=(EditText)itemView.findViewById(R.id.edtPrice);
}
}
}
}
editext値から文字列のリストを取得する方法です。
public List<string> getPriceValues(){
List<String> priceList = new ArrayList<>();
for (int i = 0; i < carsList.size(); i++) {
View viewHolder=rvPrices.getRootView();
View view1=mLayoutManager.findViewByPosition(i);
View view=rvPrices.getChildAt(i);
View root=rvPrices.getRootView();
// PricesAdapter.MyViewHolder myViewHolder=(PricesAdapter.MyViewHolder)rvPrices.findViewHolderForLayoutPosition(i);
// String price=myViewHolder.edtPrice.getText().toString().trim();
EditText edtPrice=(EditText) view.findViewById(R.id.edtPrice);
String price = edtPrice.getText().toString().trim();
priceList.add(price);
}
return priceList;
}
ここにはエラーがあります。
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
'スクロール後に値を入力したときも値が入れ替えられます。 '。最初にその '機能'を解決する必要があります。最初に他の問題に取り組むのは意味がありません。 – greenapps
'RecyclerView'は実際には表示されていないときに' Views'を削除します。したがって、目に見えない行からedittext値を取得することはできません。これらの値をアプリケーションにキャッシュしない限り。 –
'view.findViewById(R.id.edtPrice);'。あなたはNullPointerExceptionがこの文から来ていることを発見しましたか?そうです。したがって、view == null。使用前に確認してください。あなたはもはや見ることができないビューに属するedittextsからテキストを得ることができません。 – greenapps