我将新活动创建为收藏页面并放入许多textview并设置可见性所有这些=已消失 现在我通过sharedprefrence()从另一个活动中获取int变量 我得到了价值但我不知道如何逐个看到textview 我使用if / switch来检查值,但同时只能看到一个textview 如何保持一个可见性并显示其他textview?
这里是我的鳕鱼
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
int score = pref.getInt("score", 0);
if (score==100) {v1();}
else if (score==101) {v2();}
else if (score==102) {v3();}
else if (score==103) {v4();}
else if (score==104) {v5();}
else if (score==105) {v6();}
else if (score==106) {v7();}
public void v1(){
tv_fav7.setVisibility(View.VISIBLE);
tv_fav7.setText("777");
}
public void v2(){
tv_fav6.setVisibility(View.VISIBLE);
tv_fav6.setText("666");
}
public void v3(){
tv_fav5.setVisibility(View.VISIBLE);
tv_fav5.setText("555");
}
public void v4(){
tv_fav4.setVisibility(View.VISIBLE);
tv_fav4.setText("444");
}
public void v5(){
tv_fav3.setVisibility(View.VISIBLE);
tv_fav3.setText("333");
}
public void v6(){
tv_fav2.setVisibility(View.VISIBLE);
tv_fav2.setText("222");
}
public void v7(){
tv_fav1.setVisibility(View.VISIBLE);
tv_fav1.setText("111");
}
答案 0 :(得分:0)
我的建议是:
1)使用布尔值列表来保存每个文本视图的可见性状态(例如ArrayList<Boolean> mVisibilityStateList;
)并将其作为类变量。
注意:列表的大小取决于TextView
的数量。
2)在每个clickListener
的{{1}}内,更改相应Button
的值:
TextView
3)当你离开活动时,将你的布尔列表保存在 //e.g: button7 to hide/show textView7
button7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(textView7.getVisibility()==View.GONE){
textView7.setVisibility(View.VISIBLE);
mVisibilityStateList.set(7, true);// here 7 = the position of your textview in boolean list
} else{
textView7.setVisibility(View.GONE);
mVisibilityStateList.set(7, false);
}
}
});
。
SharedPreferences
4)当您创建活动时( SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
Editor editor = prefs.edit();
try {
editor.putString("your_pref_name", ObjectSerializer.serialize(mVisibilityStateList));
} catch (IOException e) {
e.printStackTrace();
}
editor.commit();
方法):
4-a)加载布尔列表:
onCreate()
SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE);
try {
mVisibilityStateList = (ArrayList<Boolean>) ObjectSerializer.deserialize(prefs.getString("your_pref_name", ObjectSerializer.serialize(new ArrayList<Boolean>())));
if(mVisibilityStateList== null || mVisibilityStateList.size()==0){
initList();// first call of the activity => load default list
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
方法:
initList()
4-b)更新textViews的可见性:
private void initList(){
mVisibilityStateList = new ArrayList<Boolean>();
for(int i =0; i<numberOfYourTextViews; i++){
mVisibilityStateList.add(false); // false because by default there are GONE
}
}
PS:
这是一个快速的解决方案,也许还有更好的方法。
为了将ArrayList保存到SharedPreferences,我使用了this code。