0
私はそれに4つのEditTextを持つListViewを持っています。私はそれらのフィールドにいくつかのテキストを入力し、スクロールすると、私はデータを失った。私は多くの例を試しましたが、何も私のために働いていません。助けてください。ListViewのEditText解決されないスクロールの問題
public NewOrderTotalCountAdapter(Context context, int resource,
List<Object> objList) {
super(context, resource, objList);
this.context = context;
this.resourceId = resource;
this.objArrayList = objList;
Log.i("Size============", String.valueOf(objList.size()));
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View totalView = convertView;
TotalCountHolder totalCountHolder;
if (totalView == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
totalView = inflater.inflate(resourceId, parent, false);
totalCountHolder = new TotalCountHolder();
totalCountHolder.productsNameView = (EditText) totalView
.findViewById(R.id.productName);
totalCountHolder.productQuantityView = (EditText) totalView
.findViewById(R.id.quantity);
totalCountHolder.productUnitPriceView = (EditText) totalView
.findViewById(R.id.unitPrice);
totalCountHolder.productTotalPriceView = (EditText) totalView
.findViewById(R.id.totalPrice);
totalCountHolder.btnDel = (Button) totalView
.findViewById(R.id.btnDel);
totalCountHolder.productsNameView
.addTextChangedListener(new TextWatchers(
totalCountHolder.productsNameView, position));
totalCountHolder.productQuantityView
.addTextChangedListener(new TextWatchers(
totalCountHolder.productQuantityView, position));
totalCountHolder.productUnitPriceView
.addTextChangedListener(new TextWatchers(
totalCountHolder.productUnitPriceView, position));
totalCountHolder.productTotalPriceView
.addTextChangedListener(new TextWatchers(
totalCountHolder.productTotalPriceView, position));
totalCountHolder.btnDel.setTag(position);
totalCountHolder.btnDel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Integer index = (Integer) v.getTag();
objArrayList.remove(index.intValue());
notifyDataSetChanged();
}
});
totalView.setTag(totalCountHolder);
} else {
totalCountHolder = (TotalCountHolder) totalView.getTag();
}
try {
if (objArrayList != null) {
if (position < objArrayList.size()) {
ProductsEntity productEntity = (ProductsEntity) objArrayList
.get(position);
String productName = productEntity.getProcdut_name();
String quantity = productEntity.getQuantity();
String unitPrice = productEntity.getUnit_price();
String total_price = productEntity.getTotal_price();
totalCountHolder.productsNameView.setText(productName);
totalCountHolder.productQuantityView.setText(quantity);
totalCountHolder.productUnitPriceView.setText(unitPrice);
totalCountHolder.productTotalPriceView.setText(total_price);
totalCountHolder.btnDel.setVisibility(View.VISIBLE);
} else {
totalCountHolder.productsNameView.setText("");
totalCountHolder.productQuantityView.setText("");
totalCountHolder.productUnitPriceView.setText("");
totalCountHolder.productTotalPriceView.setText("");
totalCountHolder.btnDel.setVisibility(View.GONE);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return totalView;
}
@Override
public int getCount() {
int i = objArrayList.size();
int j = i + 2;
return objArrayList != null ? j : 0;
}
private class TotalCountHolder {
EditText productsNameView;
EditText productQuantityView;
EditText productUnitPriceView;
EditText productTotalPriceView;
Button btnDel;
}
class TextWatchers implements TextWatcher {
View view;
int position;
TextWatchers(View view, int position) {
this.view = view;
this.position = position;
}
@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) {
EditText et = (EditText) view;
if (view.getId() == R.id.productName) {
ProductsEntity productEntity = (ProductsEntity) objArrayList
.get(position);
String name = et.getText().toString().trim();
productEntity.setProcdut_name(name);
//objArrayList.set(position, productEntity);
Log.i("Name====", name);
Log.i("Product Entity====", productEntity.toString());
return;
}
if (view.getId() == R.id.quantity) {
ProductsEntity productEntity = (ProductsEntity) objArrayList
.get(position);
String name = et.getText().toString().trim();
productEntity.setQuantity(name);
//objArrayList.set(position, productEntity);
Log.i("Name====", name);
Log.i("Product Entity====", productEntity.toString());
return;
}
if (view.getId() == R.id.unitPrice) {
ProductsEntity productEntity = (ProductsEntity) objArrayList
.get(position);
String name = et.getText().toString().trim();
productEntity.setUnit_price(name);
//objArrayList.set(position, productEntity);
Log.i("Name====", name);
Log.i("Product Entity====", productEntity.toString());
return;
}
if (view.getId() == R.id.totalPrice) {
ProductsEntity productEntity = (ProductsEntity) objArrayList
.get(position);
String name = et.getText().toString().trim();
productEntity.setTotal_price(name);
//objArrayList.set(position, productEntity);
Log.i("Name====", name);
Log.i("Product Entity====", productEntity.toString());
return;
}
}
}
あなたは下にスクロールするか、デフォルトのAndroidシステムのたびに新しい行を作成し、このための前の行を破壊することにより、あなたはスクロールするとリストビューまで、あなたのデータを失った場合にはこれが私のアダプタクラス
このリンクを参照してください。http://stackoverflow.com/questions/35967787/edittext-in-listview-gets-duplicated –