ListViewのカスタムアダプタを使用して各リスト項目のレイアウトを拡張しています。各リスト項目には、ユーザーがリストビューから項目を削除できるボタンがレイアウト内にあります。また、ユーザー入力用の編集テキストもあります。私は、編集テキストがいっぱいになったときにユーザーがそのアイテムを削除すると、その値がその下のリスト項目の編集テキストに移動するという問題が発生しています。たとえば、リストビューの1位の編集テキストの値が '25'の場合、ユーザーはアイテムをクリックして削除すると、値25が1の新しいアイテムに移動します。カスタマーアダプタを利用したListViewは、削除された項目から次の項目へのテキスト値の編集を行います。
アダプタのクラス
public class PartOrderAddPartAdapter extends ArrayAdapter<Part> {
private static final int layoutResourceId = R.layout.part_information_list_item;
private List<Part> partList;
private final Context context;
public PartOrderAddPartAdapter(Context context, List<Part> partList) {
super(context, layoutResourceId, partList);
this.context = context;
this.partList = partList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
LayoutInflater inflater = LayoutInflater.from(context);
view = inflater.inflate(layoutResourceId, null);
}
Part p = getItem(position);
TextView partNumber = (TextView) view.findViewById(R.id.part_number);
TextView partDescription = (TextView) view.findViewById(R.id.part_description);
EditText quantity = (EditText) view.findViewById(R.id.quantity);
Button removePartButton = (Button) view.findViewById(R.id.remove_part_button);
partNumber.setText(p.getPartNumber());
partDescription.setText(p.getDescription());
removePartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
partList.remove(position);
notifyDataSetChanged();
}
});
return view;
}
@Override
public Part getItem(int position) {
return partList.get(position);
}
}