Android Studio在listview项目上单击save drawableLeft图标

Android Studio在listview项目上单击save drawableLeft图标,android,listview,Android,Listview,我有一个小问题,我无法解决,我搜索了网络,我找不到答案。我正在为我的手机制作一个小的android应用程序,我有一个listview项目,其中包含一些项目。在单击我的listView中的某些项目时,我想在左侧显示一个小复选标记,以便用户可以看到他选择的内容。下次用户打开或进入该活动时,他上次单击的内容上应该已经有复选标记 我像这样设置drawableLeft图标,但现在我拥有的每个listView项都有相同的复选标记 public class BazaAdapter extends Array

我有一个小问题,我无法解决,我搜索了网络,我找不到答案。我正在为我的手机制作一个小的android应用程序,我有一个listview项目,其中包含一些项目。在单击我的listView中的某些项目时,我想在左侧显示一个小复选标记,以便用户可以看到他选择的内容。下次用户打开或进入该活动时,他上次单击的内容上应该已经有复选标记

我像这样设置drawableLeft图标,但现在我拥有的每个listView项都有相同的复选标记

public class BazaAdapter extends ArrayAdapter<bazeKlasa>
{
    private Context mContext;
    int mResource;


public BazaAdapter(@NonNull Context mContext, int resource, @NonNull 
ArrayList<bazeKlasa> objects) {
    super(mContext, resource, objects);
    this.mContext = mContext;
    this.mResource = resource;
}


@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull 
ViewGroup parent) {

    String imeBaze = getItem(position).getBaza();
    String nazivBaze = getItem(position).getImeBaze();

    bazeKlasa Baza = new bazeKlasa(imeBaze, nazivBaze);


    LayoutInflater inflater = LayoutInflater.from(mContext);
    convertView = inflater.inflate(mResource,parent,false);

    TextView TextGornji = (TextView) 
convertView.findViewById(R.id.lblcountryname);
    TextGornji.setText(nazivBaze);

    return convertView;
}
}
公共类BazaAdapter扩展了ArrayAdapter
{
私有上下文;
国际资源;
公共BazaAdapter(@NonNull Context-mContext,int-resource,@NonNull
ArrayList对象){
超级(mContext、资源、对象);
this.mContext=mContext;
this.mResource=资源;
}
@非空
@凌驾
公共视图getView(int位置,@null可转换视图,@NonNull
视图组(父级){
字符串imeBaze=getItem(position).getBaza();
字符串nazivBaze=getItem(position).getImeBaze();
bazeKlasa Baza=新的bazeKlasa(伊梅巴泽、纳齐夫巴泽);
LayoutFlater充气机=LayoutFlater.from(mContext);
convertView=充气机。充气(mResource,父项,false);
TextView TextGornji=(TextView)
convertView.findViewById(R.id.lblcountryname);
TextGornji.setText(nazivBaze);
返回视图;
}
}
getView()
方法中,您需要基于签入以编程方式设置drawable,其中哪些项目有记号标记,哪些项目没有记号标记

希望这会有所帮助

    TextView TextGornji = (TextView) convertView.findViewById(R.id.lblcountryname);

    // Provide your condition here instead of isShow
    if (isShow) {
        Drawable img = mContext.getResources().getDrawable(R.drawable.tick); //Provide tick mark drawable
        img.setBounds(0, 0, 60, 60);
        TextGornji.setCompoundDrawables(img, null, null, null);
    } else {
        TextGornji.setCompoundDrawables(null, null, null, null);
    }
变量定义

  private int mSelectedItem = -1;
和getView方法来添加此代码

 if(mSelectedItem==position)
        {
            holder.textview.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_right, 0,
                    0, 0);
        }
        else
        {
            holder.textview.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_blank, 0,0, 0);
        }
  mSelectedItem = getAdapterPosition();
  notifyDataSetChanged();
然后单击事件添加此代码

 if(mSelectedItem==position)
        {
            holder.textview.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_right, 0,
                    0, 0);
        }
        else
        {
            holder.textview.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_blank, 0,0, 0);
        }
  mSelectedItem = getAdapterPosition();
  notifyDataSetChanged();

可能与post your adapter codepop重复,这是我的适配器类。如何检查哪个有复选标记图标?还有一件事,如果您只想为选定的项目设置复选标记,那么请以编程方式设置drawable.Tnx,我现在就试试。你能告诉我“持有者”是什么意思吗?我希望这会有所帮助:)holder是一个recyclerView适配器方法对象,像(public void on BindViewHolder(@NonNull final SizeViewHolder holder,int position))到目前为止还不错,TextGornji.setCompoundDrawableSwithinInstructBounds(R.drawable.ic_right,0,0);但由于某种原因,“getAdapterPosition()”对我来说是红色的,我不知道该怎么办。为什么会这样?我应该更改什么吗?您将被adapter.notifyDataSetChanged()替换;并点击这个对你有用的链接。。。。。