【问题标题】:Change text color of an item selected in listView更改 listView 中所选项目的文本颜色
【发布时间】:2018-01-24 16:15:47
【问题描述】:

您好,我想知道如何更改 ListView 上选定项目的文本颜色? 我有一个 ListView 片段,我想在用户单击某个项目时更改颜色文本。我在 onListItemClick() 函数上尝试了一些东西,但它不起作用。

你能帮帮我吗?

【问题讨论】:

  • 请显示您尝试过的代码
  • @SAM 我尝试像示例一样在可绘制对象中创建一个名为 button_text 的 xml,并将此 android:textColor="@drawable/button_text" 放入我的 listView.xml 中,但不起作用

标签: android


【解决方案1】:

公共类 TripAdapter 扩展 RecyclerView.Adapter {

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

// 用于跟踪新的当前点击项位置

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

// 假设您想在单击列表项时更改 tvEarn textView 颜色,否则设置默认值;

如果单击列表项,此行文本视图将是白色的 否则设置为黑色

@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();
}

}

【讨论】:

    【解决方案2】:

    正如您提到的,您已经创建了android:textColor="@drawable/button_text"。让你的 button_text 像这样

    <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-->
    

    在您的 Java 代码中使用 view.setSelected(true)onItemClick() 方法中使用它。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 2013-06-03
      • 2015-01-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多