Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在每次单击listview时在SharedReferences中创建新的SharedReferences?_Java_Android_Android Sharedpreferences - Fatal编程技术网

Java 如何在每次单击listview时在SharedReferences中创建新的SharedReferences?

Java 如何在每次单击listview时在SharedReferences中创建新的SharedReferences?,java,android,android-sharedpreferences,Java,Android,Android Sharedpreferences,我正在尝试进行MainActivitylistview。项目单击至SecondActivity其中也是listview。但是无论我单击的main活动列表视图项目中有哪些项目,它总是在SecondActivity中打开相同的listview。我想在单击不同的listview时始终打开新的listview。项目单击main活动中的 private void savePlayerListToSharedpreference(ArrayList<Teams> playerList) {

我正在尝试进行MainActivity
listview。项目单击
SecondActivity
其中也是listview。但是无论我单击的
main活动列表视图
项目中有哪些项目,它总是在
SecondActivity
中打开相同的
listview
。我想在单击不同的
listview时始终打开新的
listview
。项目单击
main活动中的

private void savePlayerListToSharedpreference(ArrayList<Teams> playerList) {
    String jsonPlayer = gson.toJson(playerList);
    sharedPreference.savePlayersList(jsonPlayer);
}
private void getPlayerListFromSharedPreference() {
    String jsonPlayer = sharedPreference.getPlayersList();
    Type type = new TypeToken<List<Teams>>(){}.getType();
    playerList = gson.fromJson(jsonPlayer, type);
    if (playerList == null) {
        playerList = new ArrayList<>();
    }
}
public void onGettingDataListener() {
    if (playerList.size() == 0) {
        Toast.makeText(TeamSelectMenu.this, "No data in sharedPreferences", Toast.LENGTH_SHORT).show();
    } else {
        getPlayerListFromSharedPreference(); 
        PlayersListViewAdapter adapter = new PlayersListViewAdapter(TeamSelectMenu.this, R.layout.team_list, playerList);
        listView.setAdapter(adapter);
    }
}

SharedPreferences

public class TeamSharedPreferences {
private SharedPreferences pref;
private SharedPreferences.Editor editor;
// Context
private Context _context;

// Shared pref mode
int PRIVATE_MODE = 0;

private static final String PREF_NAME = "pref";
private static final String TEAMS = "teams";
private static final String PLAYERS = "players";


public TeamSharedPreferences(Context context) {
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void saveTeamsList(String scoreString) {
    editor.putString(TEAMS, scoreString);
    editor.commit();
}

public String getTeamsList() {
    return pref.getString(TEAMS, "");
}

public void savePlayersList(String playerString) {
    editor.putString(PLAYERS, playerString);
    editor.commit();
}
public String getPlayersList() {
    return pref.getString(PLAYERS, "");
}
}
main活动列表单击查看

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
           @Override
           public void onItemClick(AdapterView<?> parent, View view, int position, long id)
 {

                Intent intent;
                    Teams entry = (Teams) parent.getItemAtPosition(position);
                    intent = new Intent(TeamMenu.this, TeamSelectMenu.class);
                    intent.putExtra("team_id", entry.getTeamName());
                    startActivity(intent);
}
它仍然始终打开相同的
listview

SharedReferences
保存我的
SecondActivity

private void savePlayerListToSharedpreference(ArrayList<Teams> playerList) {
    String jsonPlayer = gson.toJson(playerList);
    sharedPreference.savePlayersList(jsonPlayer);
}
private void getPlayerListFromSharedPreference() {
    String jsonPlayer = sharedPreference.getPlayersList();
    Type type = new TypeToken<List<Teams>>(){}.getType();
    playerList = gson.fromJson(jsonPlayer, type);
    if (playerList == null) {
        playerList = new ArrayList<>();
    }
}
public void onGettingDataListener() {
    if (playerList.size() == 0) {
        Toast.makeText(TeamSelectMenu.this, "No data in sharedPreferences", Toast.LENGTH_SHORT).show();
    } else {
        getPlayerListFromSharedPreference(); 
        PlayersListViewAdapter adapter = new PlayersListViewAdapter(TeamSelectMenu.this, R.layout.team_list, playerList);
        listView.setAdapter(adapter);
    }
}

SharedPreferences

public class TeamSharedPreferences {
private SharedPreferences pref;
private SharedPreferences.Editor editor;
// Context
private Context _context;

// Shared pref mode
int PRIVATE_MODE = 0;

private static final String PREF_NAME = "pref";
private static final String TEAMS = "teams";
private static final String PLAYERS = "players";


public TeamSharedPreferences(Context context) {
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void saveTeamsList(String scoreString) {
    editor.putString(TEAMS, scoreString);
    editor.commit();
}

public String getTeamsList() {
    return pref.getString(TEAMS, "");
}

public void savePlayersList(String playerString) {
    editor.putString(PLAYERS, playerString);
    editor.commit();
}
public String getPlayersList() {
    return pref.getString(PLAYERS, "");
}
}
在这里,我将其设置在我的
listview
上的
SecondActivity

private void savePlayerListToSharedpreference(ArrayList<Teams> playerList) {
    String jsonPlayer = gson.toJson(playerList);
    sharedPreference.savePlayersList(jsonPlayer);
}
private void getPlayerListFromSharedPreference() {
    String jsonPlayer = sharedPreference.getPlayersList();
    Type type = new TypeToken<List<Teams>>(){}.getType();
    playerList = gson.fromJson(jsonPlayer, type);
    if (playerList == null) {
        playerList = new ArrayList<>();
    }
}
public void onGettingDataListener() {
    if (playerList.size() == 0) {
        Toast.makeText(TeamSelectMenu.this, "No data in sharedPreferences", Toast.LENGTH_SHORT).show();
    } else {
        getPlayerListFromSharedPreference(); 
        PlayersListViewAdapter adapter = new PlayersListViewAdapter(TeamSelectMenu.this, R.layout.team_list, playerList);
        listView.setAdapter(adapter);
    }
}

SharedPreferences

public class TeamSharedPreferences {
private SharedPreferences pref;
private SharedPreferences.Editor editor;
// Context
private Context _context;

// Shared pref mode
int PRIVATE_MODE = 0;

private static final String PREF_NAME = "pref";
private static final String TEAMS = "teams";
private static final String PLAYERS = "players";


public TeamSharedPreferences(Context context) {
    this._context = context;
    pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
    editor = pref.edit();
}

public void saveTeamsList(String scoreString) {
    editor.putString(TEAMS, scoreString);
    editor.commit();
}

public String getTeamsList() {
    return pref.getString(TEAMS, "");
}

public void savePlayersList(String playerString) {
    editor.putString(PLAYERS, playerString);
    editor.commit();
}
public String getPlayersList() {
    return pref.getString(PLAYERS, "");
}
}
ArrayAdapter

public class TeamListViewAdapter extends ArrayAdapter<Teams> {

private Activity activity;

public TeamListViewAdapter(Activity activity, int resource, List<Teams> teams) {
    super(activity, resource, teams);
    this.activity = activity;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {


    ViewHolder holder = null;
    LayoutInflater inflater = (LayoutInflater) activity
            .getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
    // If holder not exist then locate all view from UI file.
    if (convertView == null) {
        // inflate UI from XML file
        convertView = inflater.inflate(R.layout.team_list, parent, false);
        // get all UI view
        holder = new ViewHolder(convertView);
        // set tag for holder
        convertView.setTag(holder);
    } else {
        // if holder created, get tag from view
        holder = (ViewHolder) convertView.getTag();
    }
    Teams teams = getItem(position);
    holder.teamName.setText(teams.getTeamName());
    return convertView;
}
private static class ViewHolder {
    private TextView teamName;
    //private TextView playerNames;

    public ViewHolder(View v) {
        teamName = (TextView) v.findViewById(R.id.teamList);
    }
}}
公共类TeamListViewAdapter扩展了ArrayAdapter{
私人活动;
公共团队列表视图适配器(活动、int资源、列表团队){
超级(活动、资源、团队);
这个。活动=活动;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
LayoutFlater充气机=(LayoutFlater)活动
.getSystemService(活动.布局\充气机\服务);
//如果持有者不存在,则从UI文件中查找所有视图。
if(convertView==null){
//从XML文件膨胀UI
convertView=充气机。充气(R.layout.team_列表,父项,false);
//获取所有UI视图
支架=新的视图支架(convertView);
//为支架设置标签
convertView.setTag(支架);
}否则{
//如果创建了保持架,则从视图中获取标记
holder=(ViewHolder)convertView.getTag();
}
团队=获取项目(位置);
holder.teamName.setText(teams.getTeamName());
返回视图;
}
私有静态类视图持有者{
私有文本视图团队名称;
//私有文本视图播放器名称;
公共视图持有者(视图v){
teamName=(TextView)v.findViewById(R.id.teamList);
}
}}

playerList是什么类型的,其中存储了什么类型的项目?我忘记了,它是:private ArrayList playerList@LeoAsoAlright,你能发布GetPlayerList和getTeamsList的输出吗,就像JSON字符串一样?Teamlist JSON是:[{“teamName”:“Rymä1”},{“teamName”:“Rymä2”}],playerList是:[{“playerName”:“Pelaaja1”},{“playerName”:“Pelaaja2”}]。我不能100%确定在哪里找到它,但这是我用debugger创建的。我自己用opendialog从按钮点击中创建这些列表