Пытаюсь сделать приложение, где есть список элементов (ListView) и у каждого элемента из списка есть два значения. При нажатии на этот список появляется новое окно (Intent), где можно поменять поля. И если после этого перейти на предыдущее активити, то поля у элементов, естественно, должны меняться.
Я пытался сделать это с помощью ListView и реализацией собственного адаптера.
Так же есть некая сущность как Cash:
public class Cash {
private static HashMap<String, Integer> TABLE = new HashMap<>();
private int coast;
private int income;
private int id;
private String name;
public Cash(int coast, int income, int id, String name) {
this.coast = coast;
this.income = income;
this.id = id;
this.name = name;
}
public int getCoast() {
return coast;
}
public int getIncome() {
return income;
}
public int getId() {
return id;
}
...
}
И в слушателях к моему адаптеру я делаю следующее:
Я загружаю элемент списка и адаптер
FillingCashSettings.init(cashList.get(position), cashListAdapter); // тут загружается конкретная сущность ну и адаптер в придачу, чтобы проводить с ним некие манипуляции
И Intent`ом вызываю активность FillingCashSettings в надежде заполнить значения.
intent = new Intent(getApplicationContext(), FillingCashSettings.class);
startActivity(intent);
Вот весь код onCreate`а:
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cash_settings);
listView = (ListView) findViewById(R.id.cashListView);
cashList = new ArrayList<>();
cashSettings = new FillingCashSettings();
// Закрепляем слушателя на listView
for (int i = 0; i < settings.length; i++) {
cashList.add(new Cash(0, 0, i, settings[i]));
}
cashListAdapter = new CashListAdapter(getApplicationContext(), cashList);
listView.setAdapter(cashListAdapter);
// Закрепление хэндлеров
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(
getApplicationContext(),
"clicked " + view.getTag(),
Toast.LENGTH_SHORT
).show();
FillingCashSettings.init(cashList.get(position), cashListAdapter);
intent = new Intent(getApplicationContext(), FillingCashSettings.class);
startActivity(intent);
}
});
Затем в хэндлере кнопки я пытаюсь поменять значение у ранее загруженной сущности
enterButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String income = editText.getText().toString();
cash.setIncome(Integer.parseInt(income));
Toast.makeText(getApplicationContext(), cash.getName() + cash.getIncome(), Toast.LENGTH_LONG).show();
}
});
И как показывает отладка, вроде как оно и поменялось, но при этом у лист адаптера как было ранее значение, так и осталось.
И хочу сразу сказать, что я пробовал даже
notifyDataSetChanged()
, но не помогло.
Вот скрин самого приложения:
Как мне сделать так, чтобы ListView обновлялся?
PS: Хочу сразу сказать, что я очень слаб в андройде, так как только начал его изучать, поэтому рассчитываю на ваше понимание!