2014-04-23 4 views
0

эй все надеюсь, что вы можете помочь с этим, и спасибо за глядя на мой Q. мне нужно обновить значениекак реализовать слушателя деятельности обновить ListView адаптера

public static int hScoreGen1 = 0; (activity A) 

от другой деятельности (активность B). Значение hScoreGen1 отображается в виде списка в деятельности по

//Activity A 

public void setList1(){ 

     HashMap<String,String> temp = new HashMap<String,String>(); 
     temp.put("catGeneral","Level 1"); 
     temp.put("score1", String.valueOf(hScoreGen1) + "/10"); 
     listGeneral.add(temp); 
     } 

и

//Activity A  

adapter1 = new SimpleAdapter(
        this, 

       listGeneral, 
       R.layout.list_highscore_row, 
       new String[] {"catGeneral","score1"}, 
       new int[] {R.id.text1,R.id.text2} 
     ); 

и

//Activity A 
public static SimpleAdapter adapter1; 

и это изменяет значение

Activity B 

if (totalCorrect > ScoreScreen.currentScoreCatValue){ 

           HighScores.hScoreGen1 = totalCorrect; 
           HighScores.adapter1.notifyDataSetChanged(); 

         } 

Мне сказали, что статический адаптер может вызвать утечки. вместо этого для слушателя просто создайте интерфейс, реализуйте это над Activity, где я хочу обновить счет. Задайте этот объект-слушатель в базовом действии [примените нулевую проверку] и установите слушателя из второго действия. который звучит правильно, но carnt найдет пример кода ... если у вас есть какие-то идеи, они будут очень признательны.

ответ

0

Возможным решением было бы использовать Singleton класс, в котором вы храните ИНТ hScoreGen1:

public class Singleton { 

    private static Singleton instance; 
    public static int hScoreGen1 = 0; 

    private Singleton() { 
    } 

    public static Singleton getInstance() { 

     if (instance == null) 
      instance = new Singleton(); 
     return instance; 
    } 

    public void setScore(int score) { 

     this.hScoreGen1 = score; 
    } 

    public int getScore(int score) { 

     return this.hScoreGen1; 
    }  
} 

Таким образом, ваша переменная hScoreGen будет инициализирован только один раз, и вы будете в состоянии установить его значение в Activity а и отобразить его в Activity B:

public class ActivityA extends Activity { 

    @Override 
    public void onCreate(...) { 
     Singleton score = Singleton.getInstance(); 
     score.setScore(10); 

     ... 
    } 
} 



public class ActivityB extends Activity { 

    @Override 
    public void onCreate(...) { 
     Singleton score = Singleton.getInstance(); 
     TextView textView = (TextView) findViewById(R.id.text_view); 
     textView.setText(score.getScore()); 

     ... 
    } 
} 
+0

интересно, но, конечно, их должно быть более простой способ, как им только изменение значения var. будет транслировать приемник проще – user3387276

+0

OK Я понимаю. [Эта ссылка] (http://developer.android.com/guide/faq/framework.html#3) может помочь, если вы еще этого не видели. Я лично всегда использовал методы, описанные там, вместо использования трансляций :). – MathieuMaree

Смежные вопросы