2016-03-01 56 views
1

我想單擊它後更新可點擊按鈕中的文本。按鈕單擊後更新按鈕文本

我有一個喜歡產品的按鈕,其文本顯示有多少喜歡的產品。

<Button 
android:id="@+id/like" 
android:text= "@string/like" 
android:drawableTop="@drawable/like"/> 

<string name="like">Likes: </string>

所以在我的這個按鈕onClick()方法我用like.setText("Likes: " + product.getLikes());爲了更新文本:

Button like = (Button) v.findViewById(R.id.like);

like.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       like(product); 
       like.setText("Likes: " + product.getLikes()); 
      } 
     }); 

like()方法做的工作 - 我查那。方法product.getLikes()返回正確的值。 但是按鈕保持不變。我無法弄清楚問題所在。

更新: 我注意到的文字更新一次,本身我向下滾動到其他項目和再升....

+1

能否請您分享更多的代碼(如您的onClick方法) – W0rmH0le

+0

要更新的TextView和你調用參考按鈕。你的代碼顯示你的按鈕名稱是「like」,並且你正在爲該對象調用setText()?請發佈整個代碼也是您的文本視圖的名稱。 – Talha

+0

而不是「like.setText(...)」使用這個:「((Button)v).setText(...)」這樣你至少可以確保你正在更新點擊視圖。 – 0X0nosugar

回答

-1

試試這個:

String mlikes= product.getLikes().toString(); 
like.setText("Likes: " + mlikes);` 
+0

我已經試過了。 問題是,當我第一次在我的應用程序中打開帶有產品的片段時,它顯示了喜歡它的數量,只有當我想通過單擊按鈕添加一個喜歡時,它不會更新它。 – Johanna

+0

使用TextView而不是按鈕 – Dayvon

+0

並不可悲...... – Johanna

-1

試試這個。

final Button btn = (Button)findViewById(R.id.btn); 
    final Handler handler = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) { 
      btn.setText("new text"); 
     } 
}; 


btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    handler.sendEmptyMessage(0); 
    } 
}); 
+1

我喜歡Handlers。但是請給我解釋一下:爲什麼我必須去郵局併發函給自己的家,告訴讀者(=我)關燈,如果我可以簡單地關燈?或者在這種情況下:如果我的開關似乎壞了,通過寫信息會改善什麼? – 0X0nosugar

+0

該處理程序爲片段中的另一個問題工作 - 感謝那 但是對於這個問題它沒有做任何事情。 但是我注意到,當我向下滾動時,它會自動更新... – Johanna