В моем приложении у меня есть ArrayList, хранящийся в классе (ClassList), и ListView, использующий пользовательский ArrayAdapter для хранения этого ArrayList. ArrayAdapter содержит представления, содержащие TextView и CheckBox. Вот класс, который хранится в ArrayList:
public class Assignment {
private String mTitle;
private String mDescription;
private Date mDateAssigned;
private Date mDateDue;
private boolean mCompleted;
public Assignment(String title, String description, Date dateAssigned,
Date dateDue) {
mTitle = title;
mDescription = description;
mDateAssigned = dateAssigned;
mDateDue = dateDue;
}
и вот мой пользовательский адаптер:
public class AssignmentAdapter extends ArrayAdapter<Assignment> {
private ArrayList<Assignment> mList;
private TextView titleTextView;
private CheckBox isCompletedCheck;
private int mPosition;
public AssignmentAdapter(Context context, int resource,
int textViewResourceId, ArrayList<Assignment> objects) {
super(context, resource, textViewResourceId, objects);
mList = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = getLayoutInflater().inflate(
R.layout.assignment_row, null);
}
titleTextView = (TextView) convertView
.findViewById(R.id.assignment_text);
titleTextView.setText(mList.get(position).getTitle());
isCompletedCheck = (CheckBox) convertView
.findViewById(R.id.is_completed_check);
isCompletedCheck.setChecked(mList.get(position).isCompleted());
isCompletedCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// mPosition should be the position in the ListView, is not currently
ClassList.getInstance(getApplicationContext()).getList()
.get(index).getAssignments().get(mPosition)
.setCompleted(isCompletedCheck.isChecked());
updateDatabase();
}
});
return convertView;
}
public CheckBox getCompletedCheck() {
return isCompletedCheck;
}
}
Я хотел бы, чтобы mPosition в AssignmentAdapter был позицией в ListView, аналогично параметру позиции в onItemClick(). Мне нужна эта позиция, чтобы установить mCompleted на то, что когда-либо вводил пользователь.