我有一个自定义列表视图,每行都有一个编辑文本和一个按钮。 我只想在点击该按钮时获得编辑文本的价值。
如图所示我想获得编辑文本的价值,当点击添加到购物车按钮时为数量。 为此,我使用了适配器,代码如下:
public class ProductList_Adapter extends ArrayAdapter {
Context context;
int resource;
List<ProductList_ModelClass> productList_modelClasses = new ArrayList<>();
TextView tv_product_title;
TextView tv_product_price;
ImageView img_productImage;
RatingBar rb_custom_productlist;
EditText et_productQty;
Button btn_addto_Cart;
String product_Qty;
public ProductList_Adapter(Context context, int resource, List objects) {
super(context, resource, objects);
this.context = context;
this.resource = resource;
this.productList_modelClasses = objects;
}
@Override
public int getCount() {
return this.productList_modelClasses.size();
}
@NonNull
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater layoutInflater = ((Activity) context).getLayoutInflater();
convertView = layoutInflater.inflate(resource, parent, false);
}
img_productImage = (ImageView) convertView.findViewById(R.id.img_productImage);
tv_product_title = (TextView) convertView.findViewById(R.id.tv_product_title);
tv_product_price = (TextView) convertView.findViewById(R.id.tv_product_price);
rb_custom_productlist = (RatingBar) convertView.findViewById(R.id.rb_custom_productlist);
et_productQty = (EditText) convertView.findViewById(R.id.et_productQty);
btn_addto_Cart = (Button) convertView.findViewById(R.id.btn_addto_Cart);
Picasso.with(context)
.load(productList_modelClasses.get(position).getProduct_image())
.resize(250, 250)
.placeholder(R.mipmap.icon_placeholder) // optional
.error(R.mipmap.icon_error) // optional
.into(img_productImage);
tv_product_title.setText(productList_modelClasses.get(position).getProduct_name());
rb_custom_productlist.setRating(productList_modelClasses.get(position).getProduct_rating());
tv_product_price.setText("₹ " + productList_modelClasses.get(position).getProduct_price());
product_Qty = et_productQty.getText().toString();
btn_addto_Cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, product_Qty + , Toast.LENGTH_SHORT).show();
}
});
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, productList_modelClasses.get(position).getProduct_name(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, ProductActivity.class);
intent.putExtra("product_id", productList_modelClasses.get(position).getProduct_id());
context.startActivity(intent);
}
});
return convertView;
}
}
答案 0 :(得分:1)
另一种做法是使用ViewHolder模式。
在holder.btn_addto_Cart
的clickListener中,您可以从该edittext获取数据并进行处理。
static class ViewHolder{
TextView tv_product_title;
TextView tv_product_price;
ImageView img_productImage;
RatingBar rb_custom_productlist;
EditText et_productQty;
Button btn_addto_Cart;
String product_Qty;
}
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(resouce, parent, false);
holder = new ViewHolder();
holder.img_productImage = (ImageView) findViewById(R.id.img_productImage);
holder.tv_product_title = (TextView) findViewById(R.id.tv_product_title);
holder.tv_product_price = (TextView) findViewById(R.id.tv_product_price);
holder.rb_custom_productlist = (RatingBar) findViewById(R.id.rb_custom_productlist);
holder.et_productQty = (EditText) findViewById(R.id.et_productQty);
holder.btn_addto_Cart = (Button)findViewById(R.id.btn_addto_Cart);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.btn_addto_Cart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, holder.et_productQty.getText() , Toast.LENGTH_SHORT).show();
}
});
}
答案 1 :(得分:0)
使用Lists
,Recyclerviews
等显示数据),将所有edittext的值保存在使用适配器连接到列表的模型中。
例如,如果您编辑位置5中的某个edittext
,则在连接到您的视图的列表模型中立即更改此编辑值时,将适配器保存在位置4(0为第一个)。或者,您可以在结束编辑时将其保存到模型中,但无论如何都要保存到模型中。不要将您的数据保存在views
这是不好的做法)例如,recyclerview重新使用视图,这样滚动时您的数据就会简单地丢失)