Как увидеть, какая позиция в listivew содержит флажок, на который нажимают

В моем приложении у меня есть 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 на то, что когда-либо вводил пользователь.


person DadFoundMy    schedule 02.03.2015    source источник
comment
Почему нельзя использовать положение? Я не понимаю вашего вопроса, извините   -  person SalGad    schedule 03.03.2015
comment
@SalGad параметр mPosition не удерживает позицию нажатого флажка. Кажется, что он содержит место индекса последнего элемента.   -  person DadFoundMy    schedule 03.03.2015


Ответы (2)


Проверьте эту ссылку: http://www.mysamplecode.com/2012/07/android-listview-checkbox-example.html

Это объясняет, как добавлять флажки в список.

person StarDust    schedule 02.03.2015

Попробуйте использовать onItemClickListener в ListView вместо инициализации нового onClickListener каждый раз при вызове адаптеров getView. У вас будет позиция, а также вид, на который нажимают, чтобы убедиться, что это флажок.

person Lamorak    schedule 02.03.2015