简体   繁体   中英

Change text color of an item selected in listView

Hi i'm wondering how to change text color of an item selected on a ListView ? I have a fragment who is a ListView and i wanted to change the color text when user click on an item. I Tried something on onListItemClick() function but it's not working.

Can you help me please ?

public class TripAdapter extends RecyclerView.Adapter<TripAdapter.MyViewHolder> {

private Context mContext;
private List<A> avList = new ArrayList<>();

// for tracking new current click item position

private int mSelectedPosition = -1;


class MyViewHolder extends RecyclerView.ViewHolder {
    Button btnOpen;
    TextView tvearn;

    MyViewHolder(View view) {
        super(view);
        btnOpen = view.findViewById(R.id.btn_open);
        tvearn = view.findViewById(R.id.tv_earn);
      
    }
}


public TripAdapter(Context context, List<A> avList) {
    mContext = context;
    this.avList = avList;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView =LayoutInflater.from(parent.getContext()).inflate(R.layout.one_way_list_item, parent, false);
    return new MyViewHolder(itemView);
}

// supopose u want to change tvEarn textView color when a list item click otherwise it set default;

if click on specific list item this row textview will be white otherwise it set black

@Override
public void onBindViewHolder(ViewHolderInsurer holder, @SuppressLint("RecyclerView") final int position) {
  

    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mSelectedPosition = position;
            notifyDataSetChanged();
        }
    });
    if (mSelectedPosition == position) {
        holder.tvearn.setTextColor("#ffffff");
    } else {
        holder.radioButton.setTextColor("#000000");
    }
}
@Override
public int getItemCount() {
    return avList.size();
}

}

As you mentioned you already created android:textColor="@drawable/button_text" . Make your button_text like this

<item
    android:state_pressed="true"
    android:color="#ff000000" />

<item
    android:state_selected="true"
    android:color="#ffff0000" <!-- selected color -->
    />

<item
    android:state_focused="true"
    android:color="#ff0000ff" />

<item android:color="#ff000000" /> <!-- default color-->

In your Java code use view.setSelected(true) Use it in onItemClick() method.

 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                  view.setSelected(true);
                }
            });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM