2011-07-11 53 views
2

我使用以下代码来显示标签列表,当我选择任何项目时,在所选项目之前显示刻度标记。滚动列表视图时选择的项目问题

我将继续下一个活动。现在的问题是,当我再次来到这个活动使用后退按钮和滚动该列表查看标记显示在许多标签之前,而不是我选择的单一。

任何人指导我在这里做什么错误?

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(); 
         } 

回答

1

带标记+选定字段的类将是更有效的方法来解决这个问题,但我已经使用全局布尔数组来跟踪选定的项目。

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); 
        }}); 
0

即使我有一个类似的问题,我有一个联系人列表,当我选择用来获取自动设置一个其他..

为了解决这个问题,我添加了一个ArrayList和添加的位置被点击的项目。在使用我的适配器的getView进行绘图时,我曾经检查它是否存在于我的数组列表中。

+0

是它的一个好主意和它的工作感谢帮助让我实现它并张贴答案和代码来帮助别人。 – UMAR

相关问题