2016-07-03 1 views
0

Je veux créer une liste avec des scores pour mon application de quiz. Lorsque vous avez terminé le quiz, vous obtenez un score et je le sauvegarde avec les préférences partagées (ainsi que le nom du joueur). Ensuite, dans ScoreActivity, j'obtiens le nom d'utilisateur et le score et je veux les ajouter à la liste. Mais je ne sais pas pourquoi la liste a juste le dernier score dedans.score dans la listview de sharedpreferences

Voici mon ScoreActivity.class, vous pouvez peut-être me aider:

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); 
     } 


    } 

Merci!

+0

Pouvez-vous me montrer le code, comment enregistrer la partition et le nom d'utilisateur? –

+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 ("nom", editName.getText(). ToString()); editor.apply(); – AdinaB

+0

YOu ne sauvegardez qu'une seule partition et un seul nom d'utilisateur. Donc, vous obtenez seulement un score et un nom d'utilisateur. –

Répondre

0

Tout d'abord, créez une classe personnalisée comme celle-ci;

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; 
    } 


    } 


} 

Créez maintenant une liste de tableau comme ceci:

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

Maintenant, chaque fois que vous voulez enregistrer le score et le nom d'un utilisateur, procédez comme suit:

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

Maintenant, vous devez sauver cette liste. Ensuite, chaque fois que vous devez ajouter un autre utilisateur, récupérez d'abord la liste déjà enregistrée dans SharedPreferences, puis ajoutez les informations de cet utilisateur, puis enregistrez-le à nouveau. Enfin, le lien this vous indiquera comment enregistrer une ArrayList dans SharedPreferences:

+0

Merci pour votre réponse, mais je ne sais pas comment faire la dernière partie. Je ne comprends pas comment enregistrer l'ArrayList dans les préférences partagées, j'ai essayé avec Gson mais il dit qu'il ne peut pas être résolu ... Je ne sais pas, peut-être à cause du niveau de l'API, j'utilise 10. – AdinaB

+0

Can Ne changez-vous pas votre niveau d'api? –

+0

J'ai peur de le faire. Je pensais que c'était plus facile de créer ce tableau de bord, mais j'avais tort. Quoi qu'il en soit, merci encore d'avoir essayé de m'aider !! :RÉ – AdinaB