Android 在自定义listview适配器(kotlin)中设置默认高亮显示项

Android 在自定义listview适配器(kotlin)中设置默认高亮显示项,android,listview,kotlin,android-arrayadapter,itemselector,Android,Listview,Kotlin,Android Arrayadapter,Itemselector,默认情况下,我想使用setItemChecked突出显示列表项。CheckEditePosition设置高亮显示CheckEditePosition但不显示项目列表 this.view!!.listViewFragment.setItemChecked(3, true) 以下是我的阵列适配器代码: class MyListAdapter( context: Context, private val myItemList: List<Mytem>) : Array

默认情况下,我想使用setItemChecked突出显示列表项。CheckEditePosition设置高亮显示CheckEditePosition但不显示项目列表

  this.view!!.listViewFragment.setItemChecked(3, true)
以下是我的阵列适配器代码:

class MyListAdapter(
    context: Context,
    private val myItemList: List<Mytem>)
: ArrayAdapter<Mytem>(context, R.layout.item_simple, myItemList) {

override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
    val inflater = context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater

    val rowView: View?

    if (!myItemList[position].isHeader) {
        rowView = inflater.inflate(R.layout.item_simple, parent, false)
        rowView.itemTitle.text = myItemList[position].name
    } else {
        rowView = inflater.inflate(R.layout.item_header_group, parent, false)
        rowView.header.text = myItemList[position].name
    }
    return rowView
}

override fun isEnabled(position: Int): Boolean {
    return !myItemList[position].isHeader
}
}
我已经测试了这个:

  this.view!!.listViewFragment.refreshDrawableState()
  this.view!!.listViewFragment.invalidateViews()

如何正确设置默认突出显示的项目?

我创建了示例RecyclerView适配器。您可以使用视图代替TextView,使用setBackgroundColor()代替setTextColor()。您应该在片段中触发checkedItem(int)方法,然后notifyDataSetChanged或notifyItemChanged()

/**
*beyazid于2019年3月11日创建。
*/
公共类MyAdapter扩展了RecyclerView.Adapter{
私人语境;
私人充气机;
私有数组列表;
private int indexOfHighlightedItem=-1;
公共MyAdapter(上下文、ArrayList列表){
充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
this.context=上下文;
this.list=列表;
}
@凌驾
公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.my\u row\u用于回收器视图,父视图,false);
返回新的MyViewHolder(视图);
}
@凌驾
公共无效onBindViewHolder(最终MyViewHolder,最终int位置){
固定件(位置);
holder.tvDummy.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
indexOfHighlightedItem=位置;
notifyDataSetChanged();
}
});
}
@凌驾
public int getItemCount(){
返回list.size();
}
公共无效检查编辑项(内部位置){
indexOfHighlightedItem=位置;
}
}
  this.view!!.listViewFragment.setItemChecked(3, true)
  this.view!!.listViewFragment.refreshDrawableState()
  this.view!!.listViewFragment.invalidateViews()
/**
 * Created by beyazid on 11.03.2019.
*/
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

private Context context;
private LayoutInflater inflater;
private ArrayList<String> list;
private int indexOfHighlightedItem = -1;

public MyAdapter(Context context, ArrayList<String> list) {
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.context = context;
    this.list = list;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflater.inflate(R.layout.my_row_for_recycler_view, parent, false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
    holder.bindItem(position);
    holder.tvDummy.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            indexOfHighlightedItem = position;
            notifyDataSetChanged();
        }
    });
}

@Override
public int getItemCount() {
    return list.size();
}

public void checkedItem(int pos){
    indexOfHighlightedItem = pos;
}
}