Android 滚动列表视图时所选项目的问题
我现在使用下面的代码来显示标签列表,当我选择任何项目时,所选项目之前会显示一个勾号Android 滚动列表视图时所选项目的问题,android,listview,Android,Listview,我现在使用下面的代码来显示标签列表,当我选择任何项目时,所选项目之前会显示一个勾号 if (convertView == null) { //private Context _context = ; LayoutInflater mInflater = LayoutInflater.from(HPressTagsorUpdatesActivity.this); convertV
if (convertView == null) {
//private Context _context = ;
LayoutInflater mInflater = LayoutInflater.from(HPressTagsorUpdatesActivity.this);
convertView = mInflater.inflate(R.layout.row_tags_archives, null);
holder = new ViewHolder();
holder.tickImageView= (ImageView)convertView.findViewById(R.id.tick_image_view);
holder.tickImageView.setTag(position);
holder.titletextView = ( TextView )convertView.findViewById(R.id.tv_tags_archives);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(selected[position] == true)
{
holder.tickImageView.setVisibility(View.VISIBLE);
}else
{
holder.tickImageView.setVisibility(View.GONE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View paramView) {
ImageView tickImageView = (ImageView)paramView.findViewWithTag(position);
tickImageView.setVisibility(View.VISIBLE);
selected[position] = true;
S=tags[position];
S=S.replace(" ", "-");
S=S.toLowerCase();
Intent intent = new Intent(HPressTagsorUpdatesActivity.this ,HPressSummariesActivity.class);
startActivity(intent);
}});
然后我开始下一个活动。现在的问题是,当我再次使用“上一步”按钮并滚动到该活动时,listview标记会显示在多个标记之前,而不是我选择的单个标记之前
有人告诉我我在这里犯了什么错误吗
ImageView selectedTickImageView;
getview{
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row_tags_archives, null);
holder = new ViewHolder();
holder.tickImageView= (ImageView)convertView.findViewById(R.id.tick_image_view);
holder.titletextView = ( TextView )convertView.findViewById(R.id.tv_tags_archives);
holder.tickImageView.setTag(position);
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View paramView) {
if(selectedTickImageView != null){
selectedTickImageView.setVisibility(View.GONE);
}
ImageView tickImageView = (ImageView)paramView.findViewWithTag(position);
tickImageView.setVisibility(View.VISIBLE);
selectedTickImageView =tickImageView;
S=tags[position];
S=S.replace(" ", "-");
S=S.toLowerCase();
Intent intent = new Intent(HPressTagsorUpdatesActivity.this ,HPressSummariesActivity.class);
startActivity(intent);
}});
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
即使我也有类似的问题,当我选择了一个联系人时,我也有一个联系人列表,其他人用来自动设置
为了解决这个问题,我添加了一个ArrayList,并添加了被单击项的位置。在我的适配器的getView中绘图时,我经常检查它是否存在于我的arraylist中。带有标记+选定字段的类是解决此问题的更有效方法,但我使用了一个全局选定的布尔数组来跟踪选定项
if (convertView == null) {
//private Context _context = ;
LayoutInflater mInflater = LayoutInflater.from(HPressTagsorUpdatesActivity.this);
convertView = mInflater.inflate(R.layout.row_tags_archives, null);
holder = new ViewHolder();
holder.tickImageView= (ImageView)convertView.findViewById(R.id.tick_image_view);
holder.tickImageView.setTag(position);
holder.titletextView = ( TextView )convertView.findViewById(R.id.tv_tags_archives);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
if(selected[position] == true)
{
holder.tickImageView.setVisibility(View.VISIBLE);
}else
{
holder.tickImageView.setVisibility(View.GONE);
}
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View paramView) {
ImageView tickImageView = (ImageView)paramView.findViewWithTag(position);
tickImageView.setVisibility(View.VISIBLE);
selected[position] = true;
S=tags[position];
S=S.replace(" ", "-");
S=S.toLowerCase();
Intent intent = new Intent(HPressTagsorUpdatesActivity.this ,HPressSummariesActivity.class);
startActivity(intent);
}});
是的,这是一个好主意&非常感谢您的帮助,让我来实现它,并用代码发布答案以帮助他人。