gpt4 book ai didi

android - 从自定义 ArrayAdapter 更新 Activity

转载 作者:行者123 更新时间:2023-11-29 14:44:43 29 4
gpt4 key购买 nike

我有一个名为 CustomListCartItem 的自定义数组适配器。每当购物车商品被移除时,我想更新我的 Activity 。到目前为止,我可以删除购物车列表中的项目,也可以删除 ArrayAdapter 中的项目。但是,我想在我的 Activity 中更新名为 txtSubtotal 的 TextView。

  1. btnRemove.setOnClickListener 是否正确放置?
  2. 如何更改 txtSubtotal 的值?

我的自定义阵列适配器:

public class CustomListCartItem extends ArrayAdapter<ModelCartItem> {
public CustomListCartItem(Activity context, ArrayList<ModelCartItem> cartItems) {
super(context, R.layout.single_cart_item, cartItems);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(this.getContext())
.inflate(R.layout.single_cart_item, parent, false);
}

TextView txtItemName = (TextView) convertView.findViewById(R.id.txtItemName);
ImageView imgItem = (ImageView) convertView.findViewById(R.id.imgItem);
EditText txtQuantity = (EditText) convertView.findViewById(R.id.txtQuantity);
Button btnRemove = (Button) convertView.findViewById(R.id.btnRemove);

final ModelCartItem cartItem = getItem(position);
if (cartItem!= null) {
txtItemName.setText(cartItem.modelItem.itemName);
Integer imageRes = getContext().getResources().getIdentifier(cartItem.modelItem.imageName, "drawable", getContext().getPackageName());
imgItem.setImageResource(imageRes);
txtQuantity.setText(Integer.toString(cartItem.quantity));

btnRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Controller.removeCartItem(cartItem.modelItem); //remove from cart
remove(cartItem); //remove from adapter
}
});
}
return convertView;
}
}

我的 Activity :

public class CartActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);

TextView txtSubtotal = (TextView)findViewById(R.id.txtSubtotal);
txtSubtotal.setText(Controller.getCartSubtotal());

CustomListCartItem adapter = new
CustomListCartItem(CartActivity.this, Controller.getCartItems());
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);

}
}

最佳答案

在您的 CartActivity 中添加一个方法来更新 TextView 数据。

public class CartActivity extends AppCompatActivity {

private TextView txtSubtotal;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cart);

txtSubtotal = (TextView)findViewById(R.id.txtSubtotal);
txtSubtotal.setText(Controller.getCartSubtotal());

CustomListCartItem adapter = new
CustomListCartItem(CartActivity.this, Controller.getCartItems());
ListView list = (ListView) findViewById(R.id.list);
list.setAdapter(adapter);

}

public void updateData(String data){
txtSubtotal.setText(data);
}
}

在您的适配器中访问该方法并在您删除时更改值。

btnRemove.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Controller.removeCartItem(cartItem.modelItem); //remove from cart
remove(cartItem); //remove from adapter
((CartActivity)context).updateData("Your updated data")
}
});

希望对你有帮助。

关于android - 从自定义 ArrayAdapter 更新 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43494025/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com