Я пытаюсь решить это, но я не знаю, что я делаю неправильно, прошло 7 дней, чтобы попробовать много вещей, мне нужна помощь в его решении пожалуйста, и я думаю, что ошибка в моем созданном классе.Как отсортировать ArrayList объектов (имена игроков и оценки игроков)
У меня есть 4 игрока с 4 текстовым видом и 4 других текстовых вида для оценки игроков. Кроме того, я сделал еще один 4-х текстовых просмотров для place1, place2, place3, place4. Что я хочу сделать, так это то, что мне нужно сортировать оценки и отображать их в place1, place2, place3, place4 вместе с именем этого игрока, у которого этот счет.
То, что я сделал до сих пор является то, что я создал свой класс в основную деятельность над секцией
public class MainActivity extends AppCompatActivity {
//my created class
class JucatorScor {
public String Name;
public int Scor;
public JucatorScor (String sName, int iScor) {
this.Name = sName;
this.Scor = iScor;
}
}
//begin oncreate
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//end oncreate
}
onCreate
И у меня также есть кнопка, при нажатии кнопки, читайте мои значения от названия вида текста игроков, оценка игроков и после сортировки отображения массива Place1, place2, place3, place4 так:
//begin button click
public void sorteazaCLICK (View view) {
//initialization place1, place2, place3, place4 where i will put the sorting value
TextView varPozitia1 = (TextView) findViewById(R.id.text_loc1);
TextView varPozitia2 = (TextView) findViewById(R.id.text_loc2);
TextView varPozitia3 = (TextView) findViewById(R.id.text_loc3);
TextView varPozitia4 = (TextView) findViewById(R.id.text_loc4);
//initialization name of players
TextView varNumeJucator1 = (TextView) findViewById(R.id.text_numeJuc1);
String sNameJuc1;
sNameJuc1 = varNumeJucator1.getText().toString();
TextView varNumeJucator2 = (TextView) findViewById(R.id.text_numeJuc2);
String sNameJuc2;
sNameJuc2 = varNumeJucator1.getText().toString();
TextView varNumeJucator3 = (TextView) findViewById(R.id.text_numeJuc3);
String sNameJuc3;
sNameJuc3 = varNumeJucator1.getText().toString();
TextView varNumeJucator4 = (TextView) findViewById(R.id.text_numeJuc4);
String sNameJuc4;
sNameJuc4 = varNumeJucator1.getText().toString();
//initialization scores
TextView varScorJucator1 = (TextView) findViewById(R.id.text_scorJuc1);
String t1;
t1 = varScorJucator1.getText().toString();
TextView varScorJucator2 = (TextView) findViewById(R.id.text_scorJuc2);
String t2;
t2 = varScorJucator2.getText().toString();
TextView varScorJucator3 = (TextView) findViewById(R.id.text_scorJuc3);
String t3;
t3 = varScorJucator1.getText().toString();
TextView varScorJucator4 = (TextView) findViewById(R.id.text_scorJuc4);
String t4;
t4 = varScorJucator1.getText().toString();
//transform the values from text view scores into integer
int iScorJuc1;
iScorJuc1 = Integer.parseInt(t1);
int iScorJuc2;
iScorJuc2 = Integer.parseInt(t2);
int iScorJuc3;
iScorJuc3 = Integer.parseInt(t3);
int iScorJuc4;
iScorJuc4 = Integer.parseInt(t4);
ArrayList<JucatorScor> arrJucatorScor = new ArrayList<>(4);
//building manually the array list
arrJucatorScor.add(new JucatorScor(sNameJuc1, iScorJuc1)); //position 0
arrJucatorScor.add(new JucatorScor(sNameJuc2, iScorJuc2)); //position 1
arrJucatorScor.add(new JucatorScor(sNameJuc3, iScorJuc3)); //position 2
arrJucatorScor.add(new JucatorScor(sNameJuc4, iScorJuc4)); //position 3
Collections.sort(arrJucatorScor, new Comparator<JucatorScor>() {
//sorting my object array depending on scores
@Override
public int compare(JucatorScor o1, JucatorScor o2) {
return Integer.valueOf(o1.Scor).compareTo(o2.Scor);
}
});
//here display them from bigger to smaller according to eatch place1, place2, place3, place4
varPozitia1.setText(String.valueOf(arrJucatorScor.get(3)));
varPozitia2.setText(String.valueOf(arrJucatorScor.get(2)));
varPozitia3.setText(String.valueOf(arrJucatorScor.get(1)));
varPozitia4.setText(String.valueOf(arrJucatorScor.get(0)));
} //end button click
проблема заключается в том, что при нажатии на кнопку, не ставьте на Place1, place2, place3, place4 имя и оценка отсортированы ... просто появятся некоторые вещи l икэ на этой фотографии:
спасибо большое за ответ ... но ... я не понимаю..может ли я пример с кодом PLS? Я попробовал это, чтобы надеть мой класс @Override public String toString() { return Name + "" + Scor; } но не показывают corectlly результатов: (( я судимые с помощью renderTopJucatorScor но набор в красном цвете, и я не знаю, куда поместить этот код в классе или в кнопку мыши –
Вы можете?. Если вы добавите метод toString() в класс JucatorScor, он должен работать. Вы заметили какие-либо изменения в рендеринге? Если вы не видите ничего, возможно, скомпилированный код не обновляется. – davidxxx
мой созданный класс выглядит так: класс JucatorScor { public String Name; public int Scor; public JucatorScor (String sName, int iScor) { this.Name = sName; this.Scor = iScor; } @Override public String toString() { return Name + "" + Scor; } } это все изменения я maded только в классе и когда я запустить app..the отображение результатов подобны этим место1 = Aladin 550 Place2 = Аладин 120 place3 = Aladin 120 Place4 = Aladin 120 –