2017-06-24 15 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

相关问题