【发布时间】:2014-09-08 00:25:45
【问题描述】:
我有一个列表视图,其中每一行显示一些库存项目的名称、可用数量,以及一个用于选择要购买的项目数量的微调器(单击页面底部的“购买”时,选择的数量每个微调器都被抓取和处理)。
我目前有一个循环遍历行并通过其标识符抓取微调器。它使用该行的位置来访问另一个数组,该数组包含在该位置显示的项目的相应数量。它使用这个数量作为另一个嵌套循环的停止点,该循环创建一个由给定数量的数字组成的 ArrayList(因此用户不能选择超过可用数量)。然后将 ArrayList 作为数据字段弹出到自定义 ArrayAdapter 中,但由于某种原因,ArrayAdapter 没有填充微调器。缺少什么??
相关代码
public class PlaceOrder extends Activity {
ArrayList<Item> items;
ArrayList<Customer> customers;
int position;
ListView orderList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_place_order);
Intent data = getIntent();
items = data.getParcelableArrayListExtra("items");
customers = data.getParcelableArrayListExtra("customers");
position = data.getIntExtra("position", 0);
orderList = (ListView) findViewById(R.id.purchaseList);
PurchasedItemAdapter itemAdapter = new PurchasedItemAdapter(this, R.layout.purchase_table_row, items);
orderList.setAdapter(itemAdapter);
for (int i = 0; i < orderList.getCount(); i++) {
View view = orderList.getAdapter().getView(i, null, null);
Spinner spinner = (Spinner) view.findViewById(R.id.purchase_table_spinner);
int stop = items.get(i).qtyAvailable;
ArrayList<String> stringList = new ArrayList<String>();
for (int k = 0; k <= stop; k++) {
stringList.add(String.format("%d", k));
}
SpinnerAdapter spinnerAdapter = new SpinnerAdapter(this, R.layout.simple_spinner_item, stringList);
spinner.setAdapter(spinnerAdapter);
}
}
适配器类...
public class SpinnerAdapter extends ArrayAdapter<String> {
Context context;
int layoutResourceId;
ArrayList<String> data = null;
public SpinnerAdapter (Context context, int layoutResourceId, ArrayList<String> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ViewHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ViewHolder();
holder.qty = (TextView)row.findViewById(R.id.simple_spinner_text);
row.setTag(holder);
} else {
holder = (ViewHolder)row.getTag();
}
holder.qty.setText(data.get(position));
return row;
}
static class ViewHolder {
TextView qty;
}
}
列表视图适配器..
public class PurchasedItemAdapter extends ArrayAdapter<Item> {
Context context;
int layoutResourceId;
ArrayList<Item> data = null;
public PurchasedItemAdapter(Context context, int layoutResourceId, ArrayList<Item> data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
ItemHolder holder = null;
if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new ItemHolder();
holder.name = (TextView)row.findViewById(R.id.purchase_table_itemName);
holder.qty = (TextView)row.findViewById(R.id.purchase_table_qty);
row.setTag(holder);
} else {
holder = (ItemHolder)row.getTag();
}
Item item = data.get(position);
holder.name.setText(item.name);
holder.qty.setText(String.format("%d", item.qtyAvailable));
return row;
}
static class ItemHolder {
TextView name;
TextView qty;
}
}
【问题讨论】:
-
请贴出PurchableItemAdapter的代码