There is an adapter based on BaseAdapter.
public class WordsAdapter extends BaseAdapter { Context ctx; ArrayList<SingleWord> words; int perevod; //Объект класса SingleWord SingleWord p; private Spinner spinner; //Объявляет переменную типа SlovarDBHeler SlovarDBHeler db; //Конструктор класса WordsAdapter WordsAdapter(Context context, ArrayList<SingleWord> words, int p, SlovarDBHeler db) { ctx = context; this.words = words; perevod = p; this.db = db; } static class ViewHolder { TextView txtAlphabet; TextView txtWord; ImageButton btnFavorites; } //Сеттер для переменной perevod чтобы из MainActivity устанавливать значение переменной, а в этом адаптере брать это значение и проверять в условиях public void setPerevod(int perevod) { this.perevod = perevod; } //Геттер для переменной perevod public int getPerevod() { return perevod; } public void updateAdapter(ArrayList<SingleWord> res) { words = res; notifyDataSetChanged(); } public void setSpinner(Spinner spinner) { this.spinner = spinner; } public Spinner getSpinner() { return spinner; } @Override public int getCount() { return words.size(); } @Override public Object getItem(int position) { return words.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { //Переменная типа ViewHolder final ViewHolder viewHolder; //Создаем объект типа SingleWord p = getSingleWord(position); if (convertView == null){ LayoutInflater inflater = (LayoutInflater) ctx .getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.item, parent, false); //Создаем объект типа ViewHolder viewHolder = new ViewHolder(); // viewHolder.txtAlphabet = (TextView) convertView.findViewById(R.id.txtAlphabet); viewHolder.txtWord = (TextView) convertView.findViewById(R.id.txtWord); viewHolder.btnFavorites = (ImageButton) convertView.findViewById(R.id.btnFavorites); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } //Вставляем в соответствующие TextView и ImageButton данные из класса SingleWord viewHolder.txtWord.setText(p.word); viewHolder.txtAlphabet.setText(p.alphabet); viewHolder.btnFavorites.setImageResource(p.bntIcon); viewHolder.btnFavorites.setFocusable(false); //Проверяем если значение favorites из класса SingleWord = 1, то одна иконки, иначе другая if (words.get(position).getFavorites().equals("1")) { viewHolder.btnFavorites.setImageResource(R.drawable.icon_star_yellow); } else if (words.get(position).getFavorites().equals("0")) { viewHolder.btnFavorites.setImageResource(R.drawable.icon_star_outline_black); } //Событие клика на кнопку "Добавить в избранное" viewHolder.btnFavorites.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (getPerevod() == 1) { System.out.println(getPerevod()); //Проверяем опять переменную favorites if (words.get(position).getFavorites().equals("1")) { String wordStr = viewHolder.txtWord.getText().toString(); ContentValues values = new ContentValues(); values.put(SlovarContract.SlovarEntry.COLUMN_FAVORITES, "0"); // Вставляем новый ряд в базу данных и запоминаем его идентификатор long newRowId = db.database.update(SlovarContract.SlovarEntry.TABLE_RUS, values, SlovarContract.SlovarEntry.COLUMN_WORD + "= ?", new String[]{wordStr}); words.get(position).setFavorites("0"); // Выводим сообщение в успешном случае или при ошибке if (newRowId == -1) { // Если ID -1, значит произошла ошибка Toast.makeText(ctx, "Ошибка", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(ctx, "Удалено из избранное", Toast.LENGTH_SHORT).show(); viewHolder.btnFavorites.setImageResource(R.drawable.icon_star_outline_black); } } else if (words.get(position).getFavorites().equals("0")){ String wordStr = viewHolder.txtWord.getText().toString(); ContentValues values = new ContentValues(); values.put(SlovarContract.SlovarEntry.COLUMN_FAVORITES, "1"); // Вставляем новый ряд в базу данных и запоминаем его идентификатор long newRowId = db.database.update(SlovarContract.SlovarEntry.TABLE_RUS, values, SlovarContract.SlovarEntry.COLUMN_WORD + "= ?", new String[]{wordStr}); words.get(position).setFavorites("1"); // Выводим сообщение в успешном случае или при ошибке if (newRowId == -1) { // Если ID -1, значит произошла ошибка Toast.makeText(ctx, "Ошибка", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(ctx, "Добавлено в избранное", Toast.LENGTH_SHORT).show(); viewHolder.btnFavorites.setImageResource(R.drawable.icon_star_yellow); } } } } }); return convertView; } SingleWord getSingleWord(int position) { return ((SingleWord) getItem(position)); } } The data is output to the ListView from the database through this adapter. I'm trying to update the data in Listview after closing another activity and returning to MainActivity. I added updateAdapter method to adapter, and I call updateAdapter in MainActivity in onActivityResult, but nothing is updated.