2017-06-24 75 views
0

我有一個CardViews的RecyclerView列表。在每個CardView上,用戶先前從下拉對話框中選擇「類型」。類型選擇是「工作」和「主頁」。類型選擇以String形式存儲在SQLite數據庫中。當我運行該應用時,沒有顯示TextView「cardtype1」的視圖,該視圖應該顯示數據庫中的類型選擇。android recyclerview:我如何以編程方式選擇TextView背景色?

如何爲CardView上顯示的TextView類型設置不同的背景顏色,具體取決於用戶選擇並存儲在數據庫中的內容?以下是適配器文件的部分代碼。

Adapter.java 
... 

public List<ListItem> listItems; 

private static class ItemHolder extends RecyclerView.ViewHolder { 

    private TextView cardType1; 

    private ItemHolder(View itemView) { 
     super(itemView); 

     cardType1 = (TextView) itemView.findViewById(R.id.cardType1); 

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { 

    final ListItem listItem = listItems.get(position); 
    final ItemHolder itemHolder = (ItemHolder) holder;   

    itemHolder.cardType1.setText(listItem.getType()); 

    if (listItem.getType() == "Work") { 
     itemHolder.cardType1.setBackgroundColor(Color.parseColor("#000000")); 
    } 
    else if (listItem.getType() == "Home") { 
     itemHolder.cardType1.setBackgroundColor(Color.parseColor("#008080")); 
    } 
+0

什麼是你的代碼的問題,你沒看到後面地面還是什麼?請提供什麼'listItem'包含它已經攜帶的位置。 – Ibrahim

+0

正確,沒有顯示背景顏色。 – AJW

+0

這似乎是'listItem'的問題,請記錄下來以便測試。 – Ibrahim

回答

0

當用戶點擊該選項時,更新列表中所需的對象listItems。然後在您的適配器中調用notifyDataSetChanged()方法。

+0

對象被正確更新並且類型被正確地保存在另一個Activity的SQLite數據庫中。我遇到的問題是我試圖從數據庫訪問類型使用getType ),以便我可以測試用戶選擇的內容如果用戶選擇「工作」,我希望RecyclerView的ViewHolder中的TextView(在CardView上)顯示一種顏色,如果用戶選擇「Home」,那麼TextView會顯示 – AJW

0

當用戶從兩個選項中進行選擇時,使用以下設置textColor。

public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { 
    final ListItem listItem = listItems.get(position); 
    final ItemHolder itemHolder = (ItemHolder) holder;   
    itemHolder.cardType1.setText(listItem.getType()); 
    holder.itemView.setOnClickListener(new View.OnClickListener() { 
    if (listItem.getType() == "Work") { 
     itemHolder.cardType1.setBackgroundColor(Color.parseColor("#000000")); 
    } 
    else if (listItem.getType() == "Home") { 
     itemHolder.cardType1.setBackgroundColor(Color.parseColor("#008080")); 
    } 
} 

希望這有助於

+0

用戶在另一個活動中選擇「類型」,然後單擊一個「保存」按鈕,將該類型保存到數據庫中,然後顯示RecyclerView列表。我希望ViewHolder顯示差異取決於保存的「類型」,TextView的不同背景顏色。所以我不需要一個ClickListener。我只是希望視圖用顏色進行更新,顏色取決於數據庫中保存的類型。 – AJW

相關問題