Как я могу создавать новые SharedPreferences внутри sharedpreferences при каждом щелчке по списку? - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь перейти на MainActivity listview.itemclick на SecondActivity, где также есть просмотр списка.Но что бы ни было на элементах MainActivity listview, на которые я нажал, всегда открывается один и тот же listview в SecondActivity.Я хочу открывать новые listview всегда, когда я нажимаю разные listview.itemclick в MainActivity

MainActivity список просмотра при нажатии

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

И когда я пытаюсьпоймать его на SecondActivity:

Intent intent = getIntent();
intent.getStringExtra("team_id");

Он все еще открыт один и тот же listview все время.

sharedPreferences, где я сохраняю свои SecondActivity

private void savePlayerListToSharedpreference(ArrayList<Teams> playerList) {
    String jsonPlayer = gson.toJson(playerList);
    sharedPreference.savePlayersList(jsonPlayer);
}

Здесь я загружаю sharedPreferences на моем SecondActivity

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

Здесь я устанавливаю его на моем listview на SecondActivity

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