recyclerview
의 각 항목에있는 editext
필드 (carname과 가격)에서 click
저장시 모든 필드 값을 string
의 목록으로 가져올 필요가있는 경우에도 스크롤 값을 교환 한 후에 값을 입력했습니다. 여기 내 코드가있다.recyclerview에서 edlerxt 값을 문자열 목록으로 가져 오는 방법
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. 사용하기 전에 확인하십시오. 더 이상 보이지 않는보기에 속하는 편집 문구에서 텍스트를 가져올 수 없습니다. – greenapps