我正在尝试创建语言选择屏幕。我有一个public void rect(Canvas canvas) {
int height = canvas.getHeight() / 2;
int width = canvas.getWidth() / 2;
rectF.set(width - 200, height - 200, width + 200, height + 200);
canvas.drawRect(rectF, paint);
}
@Override
public void onDraw(Canvas canvas) {
randomShapeGenerator(canvas);
}
,并且正在使用自定义适配器类。选择一个项目后,我想在该项目中显示一个勾号。我的ListView
有一个ListView
和一个TextView
。如何实现?
这是我已经尝试过的。
ImageView
答案 0 :(得分:1)
作为一种语言选择屏幕,我假设您一次只需要选择一项。您已经添加了布尔成员isChecked;
,但似乎没有在任何地方使用它。
这里您需要一个int成员-例如,selectedItemPosition
的初始值设置为-1。
换句话说,替换
boolean isChecked = false;
使用
int selectedItemPosition = -1;
将此添加到onItemClick()
selectedItemPosition = ((selectedItemPosition!=position)?position:-1);
notifyDataSetChanged();
将此添加到您的getView()
image_tick.setVisibility((selectedItemPosition=position)?View.VISIBLE:View.GONE);
ListViews
,follow view holder pattern优化性能时。convertView
来回收视图。image_tick.setImageResource(R.drawable.ic_checked);
替换android:src="R.drawable.ic_checked"
。答案 1 :(得分:0)
在点击的图像项中使用setVisibility(View.VISIBLE);
!即:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView= inflater.inflate(R.layout.content_lang_list,parent,false);
TextView lang_text = (TextView) rowView.findViewById(R.id.text_select_lang);
final ImageView image_tick = (ImageView) rowView.findViewById(R.id.image_tick);
lang_text.setText(languages[position]);
image_tick.setImageResource(R.drawable.ic_checked);
image_tick.setVisibility(View.VISIBLE); //Show image
return rowView;
}