android:如何在同一时间保持多个textview可见?

时间:2015-04-14 15:06:43

标签: android

我将新活动创建为收藏页面并放入许多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");
}       

1 个答案:

答案 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