Я сделал приложение, которое берет слова и определения из двух текстовых файлов (один со словом, а другой с определениями). Случайное число используется для генерации слова для отображения, а затем перемешивается и выстраивает 5 определений вместе с правильным для отображения параметров. Приложение работает отлично, но при выборе любого параметра оно не обновляет параметры, добавляя новые для следующего слова.
ListView list;
ArrayAdapter<String> adap;
ArrayList<String> word=new ArrayList<>();
List<String> dfn=new ArrayList<>();
List<String> dfn2=new ArrayList<>();
String que = "",ans = "";
int counter=0;
private void random(){
Random num = new Random();
int nw = num.nextInt(word.size());
que = word.get(nw);
ans = dfn2.get(nw);
dfn = dfn2;
dfn.remove(ans);
Collections.shuffle(dfn);
dfn = dfn.subList(0,4);
dfn.add(ans);
Collections.shuffle(dfn);
list = (ListView) findViewById(R.id.li);
adap = new ArrayAdapter<>(
this,
android.R.layout.simple_list_item_1,
dfn
);
TextView t = (TextView) findViewById(R.id.t);
t.setText(que);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
TextView t2 = (TextView) findViewById(R.id.t2);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
Scanner sc = new Scanner(getResources().openRawResource(R.raw.word2));
Scanner sc2 = new Scanner(getResources().openRawResource(R.raw.def2));
while(sc.hasNextLine()&&sc2.hasNextLine()){
String a = sc.nextLine();
String b = sc2.nextLine();
word.add(a);
dfn.add(b);
dfn2.add(b);
}
sc.close();
sc2.close();
random();
run();
}
public void run(){
list.setAdapter(adap);
list.setOnItemClickListener((adapterView, view,i,l)->{//lambda expression
if (dfn.get(i).equals(ans)){
Toast.makeText(getApplicationContext(),"Correct!",Toast.LENGTH_SHORT).show();
counter++;
}
else{
Toast.makeText(getApplicationContext(),"Wrong!",Toast.LENGTH_SHORT).show();
}
TextView t2 = (TextView) findViewById(R.id.t2);
t2.setText("Score : "+counter);
notifyDataChanged();
}
);
}
public void notifyDataChanged() {
random();
adap.notifyDataSetChanged();
}
}
Я хочу, чтобы параметры заменялись новыми после каждого щелчка




Вы действительно создаете новый адаптер с каждым щелчком, но вы не добавляете новый адаптер в список.
Вместо того, чтобы каждый раз создавать новый адаптер, вам следует просто обновлять значения. В этом случае вам также нужно вызвать notifyDataSetChanged (что вы уже делаете, но вам не нужно)
if (adapt == null) {
adap = new ArrayAdapter<>(
this,
android.R.layout.simple_list_item_1,
dfn
);
} else {
adapt.updateItems(dfn);
adap.notifyDataSetChanged();
}
public void notifyDataChanged() {
random();
}