Java 如何在每次单击listview时在SharedReferences中创建新的SharedReferences?
我正在尝试进行MainActivityJava 如何在每次单击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) {
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从按钮点击中创建这些列表