android recyclerview:如何以编程方式选择TextView背景颜色?

时间:2017-06-24 18:02:01

标签: android android-recyclerview android-cardview

我有一个CardViews的RecyclerView列表。在每个CardView上,用户首先从下拉对话框中选择“类型”。类型选择是“工作”和“主页”。类型选择作为String存储在SQLite数据库中。当我运行应用程序时,没有显示TextView“cardtype1”的视图,它应该显示数据库中的类型选择。

如何为CardView上显示的TextView类型设置不同的背景颜色,具体取决于用户选择并存储在数据库中的内容?以下是Adapter文件中的部分代码。

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"));
    }

2 个答案:

答案 0 :(得分:0)

当用户单击该选项时,更新列表中的所需对象listItems。然后在适配器中调用notifyDataSetChanged()方法。

答案 1 :(得分: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"));
    }
}

希望这有帮助