android recyclerview: how do I programmatically select TextView background color?

三世轮回 提交于 2019-12-20 07:07:26

问题


I have a RecyclerView list of CardViews. On each CardView, the user previosuly selected the "type" from a dropdown dialog. The type choices are "Work" and "Home". The type choice is stored in an SQLite database as a String. When I run the app, no view is shown for the TextView "cardtype1" which is supposed to show the type choice from the database.

How can I set a different background color for TextView type that is shown on the CardView, depending on what the user selects and is stored in the database? Below is the partial code from the Adapter file.

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

回答1:


when user click on the option, update the required object in the list, listItems. Then call notifyDataSetChanged() method in your adapter.




回答2:


Use the following to set the textColor when user selects from your two option.

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

Hope this helps



来源:https://stackoverflow.com/questions/44739404/android-recyclerview-how-do-i-programmatically-select-textview-background-color

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!