Необходимо присвоить кнопке, созданной программно в цикле, отдельный onClickListener. Я написал свой код, но он каждой кнопке присваивает Listener последней созданной. В чём моя ошибка?
Cursor pc;
while (pc.moveToNext()) {
deleteNum = new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
ContID = Long.decode(ID);
String queryPhone = ContactsContract.Contacts.Data.RAW_CONTACT_ID + "='" + ContID + "'";
String queryByNumber = ContactsContract.CommonDataKinds.Phone.NUMBER + "='" + nomer + "'";
removePhoneByNumber(ContID, nomer, queryPhone ,queryByNumber);
}
catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Запущен процесс удаления", Toast.LENGTH_SHORT).show();
}
};
ImageView phoneD = new ImageView(this);
phoneD.setImageResource(R.drawable.delete_4590);
phoneD.setLayoutParams(butParams);
phoneD.setOnClickListener(deleteNum);
phoneD.setTag("Delete" + i);
layout.addView(phoneD);
}
Ваша ошибка в том, что вы присваиваете кнопкам ссылку на слушатель нажатий. А этой ссылке вы в каждой итерации присваиваете новый объект-слушатель. Таким образом у вас n раз создаётся новый объект-слушатель, но он присваивается в одну и ту же переменную которую вы и назначаете кнопке.
Вам надо для каждой кнопки создать отдельную переменную-слушатель и её кнопкам назначать.
Cursor pc;
while (pc.moveToNext()) {
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
ContID = Long.decode(ID);
String queryPhone = ContactsContract.Contacts.Data.RAW_CONTACT_ID + "='" + ContID + "'";
String queryByNumber = ContactsContract.CommonDataKinds.Phone.NUMBER + "='" + nomer + "'";
removePhoneByNumber(ContID, nomer, queryPhone ,queryByNumber);
}
catch (Exception e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Запущен процесс удаления", Toast.LENGTH_SHORT).show();
}
};
ImageView phoneD = new ImageView(this);
phoneD.setImageResource(R.drawable.delete_4590);
phoneD.setLayoutParams(butParams);
phoneD.setOnClickListener(listener);
phoneD.setTag("Delete" + i);
layout.addView(phoneD);
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Допустим, мы находимся на странице (неважно какой) и у нас в адресной строке что-то вроде: https://sitecom/app/backend
Помогите расположить три блока в строку на всю ширину экрана, так, чтобы левый и правый имели фиксированную ширину, а средний адаптивно сжимался...