2016-07-03 20 views
0

Ich möchte eine Liste mit Ergebnissen für meine Quiz-App erstellen. Wenn Sie das Quiz abgeschlossen haben, erhalten Sie eine Punktzahl, und ich speichere sie mit Shared Preferences (und auch dem Namen des Players). Dann, in ScoreActivity, bekomme ich den Benutzernamen und die Punktzahl und ich möchte, dass sie zur Liste hinzugefügt werden. Aber ich weiß nicht, warum die Liste nur die letzte Punktzahl enthält.Ergebnis in Listenansicht von sharedpreferences

Hier mein ScoreActivity.class ist, vielleicht können Sie mir helfen:

public class ScoreActivity extends Activity { 
    ListView listView; 
    List<String> scoreList = new ArrayList<String>(); 





    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_score); 



     listView=(ListView) findViewById(R.id.listView_score); 




     SharedPreferences sharedPref = getSharedPreferences("userInfo", Context.MODE_PRIVATE); 
     String name = sharedPref.getString("name",""); 

     SharedPreferences sharedPreferences = getSharedPreferences("userScore", Context.MODE_PRIVATE); 
     String score = sharedPreferences.getString("score",""); 


     scoreList.add(name+" "+score); 







      ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        this, 
        R.layout.my_list, scoreList); 

      listView.setAdapter(arrayAdapter); 
     } 


    } 

Dank!

+0

Können Sie mir den Code zeigen, wie Sie die Punktzahl und den Benutzernamen speichern? –

+0

SharedPreferences sharedPreferences = getSharedPreferences ("userScore", Context.MODE_PRIVATE); SharedPreferences.Editor Editor = sharedPreferences.edit(); editor.putString ("score", String.valueOf (score)); editor.apply(); SharedPreferences sharedPref = getSharedPreferences ("userInfo", Context.MODE_PRIVATE); SharedPreferences.Editor Editor = sharedPref.edit(); editor.putString ("Name", editName.getText(). ToString()); editor.apply(); – AdinaB

+0

Sie speichern nur eine Bewertung und einen Nutzernamen. Sie erhalten also nur eine Bewertung und einen Nutzernamen. –

Antwort

0

Zuerst erstellen Sie eine benutzerdefinierte Klasse wie folgt;

public class UserInfoClass implements Serializable{ 

    String userName; 
    String score; 

    public String getScore() { 
     return score; 
    } 

    public void setScore(String score) { 
     this.score = score; 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public void setUserName(String userName) { 
     this.userName = userName; 
    } 


    } 


} 

Jetzt eine Array-Liste wie folgt erstellen:

List<UserInfoClass> users= new ArrayList<>(); 

Nun, wenn Sie ein Benutzer Partitur und Namen speichern möchten, gehen Sie wie folgt vor:

UserInfoClass userobject = new UserInfoClass();   
userobject.setScore("50"); 
userobject.setUserName("Username"); 
users.add(userobject); 

Jetzt müssen Sie sparen diese Liste. Wenn Sie dann einen weiteren Benutzer hinzufügen müssen, müssen Sie zuerst die bereits gespeicherte Liste aus SharedPreferences abrufen und dann die Benutzerinformationen hinzufügen und dann erneut speichern. Schließlich, this Link wird Ihnen sagen, wie Sie eine ArrayList in SharedPreferences speichern:

+0

Vielen Dank für Ihre Antwort, aber ich weiß nicht, wie ich den letzten Teil machen soll. Ich verstehe nicht, wie man die ArrayList in freigegebenen Einstellungen speichert, ich habe mit Gson versucht, aber es sagt, dass es nicht gelöst werden kann ... Ich weiß nicht, vielleicht wegen der API-Ebene verwende ich 10. – AdinaB

+0

Can änderst du nicht dein API Level? –

+0

Ich habe Angst, dies zu tun. Ich dachte, es wäre einfacher, diese Anzeigetafel zu erstellen, aber ich lag falsch. Wie auch immer, nochmals vielen Dank für den Versuch, mir zu helfen !! : D – AdinaB