0
我有一個使用POJO類填充的ArrayAdapter。該列表視圖包含2個佈局。 1是用於菜單項目,另一個用於類別。列表視圖與分隔符很好。ListView中使用ArrayAdapter的按鈕
後來我試着在每個menuitem行中添加一個按鈕來編輯它中的細節。在這裏,當我嘗試獲取按鈕被點擊的行的位置時,我遇到了一個問題。
我試圖顯示使用日誌的位置。 1.如果行數較少並且不需要滾動。日誌顯示正確的位置。 2.如果我有更多的行進入頁面,那麼我的日誌中的位置不正確。
您能否引導我到我的代碼需要更正的行?提前
public class ConfirmAdapter extends ArrayAdapter<POJO_ConfirmMenu> {
private ArrayList<POJO_ConfirmMenu> ticketItem;
Context context;
LayoutInflater vi;
public ConfirmAdapter(Context context ,ArrayList<POJO_ConfirmMenu> menu) {
super(context, 0, menu);
this.ticketItem = new ArrayList<POJO_ConfirmMenu>();
this.ticketItem.addAll(menu);
this.context =context;
vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
private class ViewHolder {
TextView ticketItem;
TextView type;
TextView quantity;
Button cancel,edit;
}
public boolean isEnabled(int position) {
if (ticketItem.get(position).getItemType().equals("menucategory"))
return false;
return true;
}
public int getItemViewType(int position) {
if (ticketItem.get(position).getItemType().equals("menucategory"))
return 0;
return 1;
}
public int getViewTypeCount() {
return 2;
}
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
int type = getItemViewType(position);
if (convertView == null) {
holder = new ViewHolder();
switch (type) {
case 0:
convertView = vi.inflate(R.layout.group, null);
holder.ticketItem = (TextView) convertView.findViewById(R.id.tvGroup);
convertView.setBackgroundColor(Color.RED);
break;
case 1:
convertView = vi.inflate(R.layout.confirmitem, null);
holder.ticketItem = (TextView) convertView.findViewById(R.id.tvConfirmItem);
holder.quantity = (TextView) convertView.findViewById(R.id.tvQuantity);
holder.cancel = (Button) convertView.findViewById(R.id.bCancel);
holder.edit = (Button) convertView.findViewById(R.id.bEdit);
holder.edit.setTag(position);
// Edit button
holder.edit.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int pos = (Integer) v.getTag();
Log.i("ConfirmAdapter ","Order Edit @ position : " + pos);
}
});
break;
} convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
switch (type) {
case 0:
holder.ticketItem.setText(ticketItem.get(position).getTicketItemObject().getCategoryName()) ;
convertView.setBackgroundColor(Color.RED);
break;
case 1:
holder.ticketItem.setText(ticketItem.get(position).getTicketItemObject().getName());
holder.quantity.setText(Integer.toString(ticketItem.get(position).getTicketItemObject().getItemCount()));
break;
}
return convertView;
}
}
感謝
}
好的,羅賓先生。 –
羅賓。我使用Set和getTag,但仍然出現錯誤的位置。我已經更新了 – user1822729
這個問題中的代碼,它的工作原理是,檢查它的編輯按鈕或取消按鈕。 – RobinHood