从 sharedpreferences 在列表视图中得分

score in listview from sharedpreferences

我想为我的测验应用程序创建一个包含分数的列表。当你完成测验时,你会得到一个分数,我用共享首选项(以及玩家的名字)保存它。然后,在 ScoreActivity 中,我得到用户名和分数,我希望将它们添加到列表中。但是我不知道为什么列表中只有最后一个分数。

这是我的 ScoreActivity.class,也许你可以帮助我:

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


    }

谢谢!

首先,像这样创建一个自定义 Class ;

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


    }


}

现在像这样创建一个数组列表:

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

现在,只要您想保存用户的分数和姓名,请执行以下操作:

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

现在您必须保存此列表。然后,每当您必须添加另一个用户时,首先从 SharedPreferences 检索已保存的列表,然后添加该用户的信息,然后再次保存。最后,thislink会告诉你如何在SharedPreferences中保存一个ArrayList: