【发布时间】:2018-12-03 13:31:13
【问题描述】:
我有这个自定义适配器
public class ProductAdapter extends ArrayAdapter<Product> {
Context mContext;
public ProductAdapter(Activity context, ArrayList<Product> products) {
super(context, 0, products);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View listItemView = convertView;
if (listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
Product currentProduct = getItem(position);
TextView nameTextView = (TextView) listItemView.findViewById(R.id.product_name);
nameTextView.setText(currentProduct.getProductName());
TextView numberTextView = (TextView) listItemView.findViewById(R.id.product_price);
numberTextView.setText("$"+currentProduct.getProductPrice());
ImageView iconView = (ImageView) listItemView.findViewById(R.id.list_item_icon);
iconView.setImageResource(currentProduct.getProductImage());
Button buyNow = (Button) listItemView.findViewById(R.id.buy_now);
buyNow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext,"test", Toast.LENGTH_SHORT).show();
}
});
return listItemView;
}
}
list_item 中的这个按钮
<Button
android:id="@+id/buy_now"
android:text="Buy Now"
style="@style/listBtn" />
如您所见,我已将 mContext 定义为 Context 以在适配器内部使用它。
单击按钮会使应用程序关闭并且它不起作用。如何在自定义适配器中正确创建onClickListener?
【问题讨论】:
-
尝试 Toast.makeText(v.getContext(),"test", Toast.LENGTH_SHORT).show();或者您可以在应用崩溃时发布异常
标签: android onclicklistener custom-adapter