その行を削除する必要がある2つのテキストビューと1つのボタンを備えたカスタムアダプターがあります。
public class ListViewAdapter extends ArrayAdapter<OneRowListView> implements OnClickListener {
private ArrayList<OneRowListView> items;
private ContactsActivity ca;
private int position;
private OneRowListView o;
public ListViewAdapter(Context context, int textViewResourceId, ArrayList<OneRowListView> items) {
super(context, textViewResourceId, items);
this.items = items;
ca = (ContactsActivity) context;
}
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
View v = convertView;
position = pos;
if (v == null) {
LayoutInflater vi = (LayoutInflater)ca.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.one_item_contacts_list, null);
}
o = items.get(position);
if (o != null) {
TextView name = (TextView) v.findViewById(R.id.name);
TextView surname = (TextView) v.findViewById(R.id.surname);
TextView phoneNumber = (TextView) v.findViewById(R.id.phonenumber);
Button deleteButton = (Button) v.findViewById(R.id.deleteButton);
deleteButton.setOnClickListener(this);
// ...
}
return v;
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.deleteButton:
remove(items.remove(position));
notifyDataSetChanged();
break;
}
}
}
問題は、いずれかのボタンを押すと、現在の行ではなく常に最後の行が削除されることです。変数の位置は常に最後の行を指します。問題はどこだ ?