0

我正在製作類似社交應用的東西。Android:自定義對話框視圖,在第一次顯示之前更改按鈕顏色

我想,如果有人已經查看過某些東西,視圖中的按鈕將改變顏色。

我有一種方法來檢查是否有人查看過此列表之前。它在clickListener中工作,並會顯示「已按下」。

我很難弄清楚如何改變按鈕的顏色,也許onCreate方法。我試過將它作爲參數傳遞,但顏色將在第二次列表被拉起時發生變化...

這就是我如何調用我的對話框並將它傳遞給列表ID。

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View r = inflater.inflate(R.layout.list_view_dialog_layout, container, false); 

    checklistView = (UserlistView) r.findViewById(R.id.user_list); 
    checklistview.getList(getArguments().getString("list_id")); // Can be modified 

    return r; 
} 

在該函數getList中,我打電話給我的數據庫來獲取列表的信息。

public void getList(final String listID) { 
    // TODO fetch list information from params and fill fields 
    Event.requestEvent(listID, "AuthToken", new List.ListReceivedListener() { 
     @Override 
     public void onListReceived(lissts... lissteses) { 
      List lst = lissteses[0]; 
      setInfo(lst); 
      LISTID = listID; 


     } 
    }); 
} 

public void setInfo(List lst){ 


    listTitleView.setText(lst.listName); 
    viewsCount.setText(Integer.toString(lst.views)); 

} 

我有一個檢查功能,查看是否用戶已經點擊了「觀看了」

公共靜態觀察(串ID,最後絃樂用戶){布爾 DatabaseReference rootref = FirebaseDatabase.getInstance( ).getReference( 「意見」)孩子(ID)。

rootref.addListenerForSingleValueEvent(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      if(dataSnapshot.hasChild(user)){ 
       result = true; 
      } 
      else{ 
       result = false; 
      } 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 
    return result; 
} 

的話,我想它調用了的GetList()這樣

if(viewed(lstID, curuser){ 
    viewButton.setColorFilter(R.color.blue); 
} 

這不會是第一次在視圖中創建工作,因此,如果用戶已經單擊視圖,註銷並重新登錄,然後再次單擊視圖,混淆視圖計數。

+0

PLZ在這裏更新您的代碼,所以我可以在這裏... –

+0

安置自己的代碼在這裏,這樣我們就可以找出問題 – Bhavnik

+0

你應該告訴我們你的代碼用來處理顏色改變,並在那裏你把他們然後我們可以幫助你。視圖更新後您是否設置了onClickListener? –

回答

-1
int flag=0; 
    button.setOnClickLitener(new OnClickListener()){ 

     @Override 
     public void onClick(View arg0) { 
      flag++; 

     } 
    }); 
if(flag>0){ 
button.setBackgroundColor(getResources().getColor(R.color.yourColor)); 
} 
0

另一個解決方案是這樣的。

button.setBackgroundColor(getResources().getColor(R.color.youCustomColor)); 
+0

是的,我遇到的問題是在第一次視圖被拉起之前做的。 – NatBat

+0

分享你的代碼,你發現按鈕已被按下或沒有。 – 2017-05-09 10:16:48

相關問題