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