2015-04-03 63 views
0
public View getView(final int position, View convertView, ViewGroup parent) { 
    View grid; 
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    ImageView imageview; 
    ImageView my_select = null; 
    final ImageView img_select; 
    if (convertView == null) { 
     grid = new View(mContext); 
     grid = inflater.inflate(R.layout.single_view, null); 
     imageview = (ImageView) grid.findViewById(R.id.SingleView); 
     img_select = (ImageView) grid.findViewById(R.id.tick); 
     imageview.setLayoutParams(new GridView.LayoutParams(250, 250)); 
     imageview.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageview.setPadding(8, 8, 8, 8); 
     imageview.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 
    } 
    else { 
     imageview = (ImageView) convertView; 
    } 
    imageview.setImageResource(Image[position]); 
    return imageview; 
} 
+0

什么叫蜱的意思图片? – Fahim 2015-04-03 06:28:26

+0

当用户点击图片时,我会显示正确的打勾图片(小图片)告诉用户它已被选中 – 2015-04-03 06:30:33

+0

http://stackoverflow.com/questions/29385226/max-selectable-count-for-choice -mode-multiple-modal-gridview/29385433#29385433 – Yogendra 2015-04-03 06:46:15

回答

0

得到请将点击收听了,如果条件:

public View getView(final int position,View convertView,ViewGroup parent){ 
      View grid; 
      LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      ImageView imageview; 
      ImageView my_select=null; 
      final ImageView img_select; 
      if(convertView==null) 
      { 
       grid = new View(mContext); 
       grid = inflater.inflate(R.layout.single_view,null); 
       imageview = (ImageView)grid.findViewById(R.id.SingleView); 
       img_select = (ImageView)grid.findViewById(R.id.tick); 
       imageview.setLayoutParams(new GridView.LayoutParams(250,250)); 
       imageview.setScaleType(ImageView.ScaleType.CENTER_CROP); 
       imageview.setPadding(8,8,8,8); 

      } 
      else 
      { 
       imageview = (ImageView) convertView; 
      } 
imageview.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 

        } 
       }); 
      imageview.setImageResource(Image[position]); 
      return imageview; 
     } 
+0

感谢您的回答,但这不会解决问题。因为我需要在用户点击gridview中的任何图像时勾选图像 – 2015-04-03 06:33:56

+0

然后使用gridview.setonitemclicklistener(); – Shvet 2015-04-03 06:34:52

+0

点击事件工作完美,但如何坚持(显示)正确的刻度图像到另一个点击图像正在令我望而生畏 – 2015-04-03 06:37:01

0

只需要创建一个布尔变量如。 isSelected在模型类中,您用于arrayList数据。在点击事件指派isSelected =真正的点击位置,做my_select.setSelected(data.getPosition(位置).isSelected)在getView ....

参考遵循这个例子...

* *********************** adapterClass ************************** **********

public class HiddenGalleryAdapter extends BaseAdapter { 

private LayoutInflater infalter; 
private ArrayList<HiddenGalleryPath> data = new ArrayList<HiddenGalleryPath>(); 
ImageLoader imageLoader; 
private boolean isActionMultiplePick; 
ViewHolder holder; 

public HiddenGalleryAdapter(Context c, ImageLoader imageLoader) { 
    infalter = (LayoutInflater) c 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    this.imageLoader = imageLoader; 
    // clearCache(); 
} 

@Override 
public int getCount() { 
    return data.size(); 
} 

@Override 
public HiddenGalleryPath getItem(int position) { 
    return data.get(position); 
} 

@Override 
public long getItemId(int position) { 
    return position; 
} 

public void setMultiplePick(boolean isMultiplePick) { 
    this.isActionMultiplePick = isMultiplePick; 
} 

public void selectAll(boolean selection) { 
    for (int i = 0; i < data.size(); i++) { 
     data.get(i).isSeleted = selection; 

    } 
    notifyDataSetChanged(); 
} 

public boolean isAllSelected() { 
    boolean isAllSelected = true; 

    for (int i = 0; i < data.size(); i++) { 
     if (!data.get(i).isSeleted) { 
      isAllSelected = false; 
      break; 
     } 
    } 

    return isAllSelected; 
} 

public boolean isAnySelected() { 
    boolean isAnySelected = false; 

    for (int i = 0; i < data.size(); i++) { 
     if (data.get(i).isSeleted) { 
      isAnySelected = true; 
      break; 
     } 
    } 

    return isAnySelected; 
} 

public ArrayList<HiddenGalleryPath> getSelected() { 
    ArrayList<HiddenGalleryPath> dataT = new ArrayList<HiddenGalleryPath>(); 

    for (int i = 0; i < data.size(); i++) { 
     if (data.get(i).isSeleted) { 
      dataT.add(data.get(i)); 
     } 
    } 

    return dataT; 
} 

public void addAll(ArrayList<HiddenGalleryPath> files) { 

    try { 
     this.data.clear(); 
     this.data.addAll(files); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    notifyDataSetChanged(); 
} 

public void changeSelection(View v, int position) { 
    ((ViewHolder) v.getTag()).imgQueueMultiSelected 
      .setVisibility(View.VISIBLE); 
    if (data.get(position).isSeleted) { 
     data.get(position).isSeleted = false; 
    } else { 
     data.get(position).isSeleted = true; 
    } 

    ((ViewHolder) v.getTag()).imgQueueMultiSelected.setSelected(data 
      .get(position).isSeleted); 
} 

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

    if (convertView == null) { 

     convertView = infalter.inflate(R.layout.hidden_img_gallery_item, null); 
     holder = new ViewHolder(); 
     holder.imgQueue = (ImageView) convertView 
       .findViewById(R.id.imgQueuehidden); 

     holder.imgQueueMultiSelected = (ImageView) convertView 
       .findViewById(R.id.imgQueueMultiSelectedhidden); 

     if (isActionMultiplePick) { 
      holder.imgQueueMultiSelected.setVisibility(View.VISIBLE); 
     } else { 
      holder.imgQueueMultiSelected.setVisibility(View.GONE); 
     } 

     convertView.setTag(holder); 

    } else { 
     holder = (ViewHolder) convertView.getTag(); 
     if (isActionMultiplePick) { 
      holder.imgQueueMultiSelected.setVisibility(View.VISIBLE); 
     } else { 
      holder.imgQueueMultiSelected.setVisibility(View.GONE); 
     } 
    } 
    holder.imgQueue.setTag(position); 

    try { 

     imageLoader.displayImage("file://" + data.get(position).sdcardPath, 
       holder.imgQueue, new SimpleImageLoadingListener() { 
        @Override 
        public void onLoadingStarted(String imageUri, View view) { 
         holder.imgQueue 
           .setImageResource(R.mipmap.image_gallery); 
         super.onLoadingStarted(imageUri, view); 
        } 
       }); 

     if (isActionMultiplePick) { 
      holder.imgQueueMultiSelected 
        .setSelected(data.get(position).isSeleted); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return convertView; 
} 

public class ViewHolder { 
    ImageView imgQueue; 
    ImageView imgQueueMultiSelected; 
} 

public void clearCache() { 
    imageLoader.clearDiscCache(); 
    imageLoader.clearMemoryCache(); 
} 

public void clear() { 
    data.clear(); 
    notifyDataSetChanged(); 
} 

}

*************************的GridView clickListner * **************************

GridView gridView; 



    gridView.setOnclickListner(mItemMulClickListener); 




    AdapterView.OnItemClickListener mItemMulClickListener = new   AdapterView.OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> l, View v, int position, long id) { 

      adapter.changeSelection(v, position); 
    } 
}; 
0

你可以尝试修改代码如下,在这里我用viewHolder类你行的看法(ImageView的等),而不是直接在getview方法使用

private ViewHolder m_viewHolder; 

public View getView(final int position, View convertView, ViewGroup parent) 
{ 
    View grid; 
    LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    m_viewHolder = new ViewHolder(); 

    if (convertView == null) 
    { 
     grid = new View(mContext); 
     grid = inflater.inflate(R.layout.single_view, null); 
     m_viewHolder.imageview = (ImageView) grid.findViewById(R.id.SingleView); 
     m_viewHolder.img_select = (ImageView) grid.findViewById(R.id.tick); 
     m_viewHolder.imageview.setLayoutParams(new GridView.LayoutParams(250, 250)); 
     m_viewHolder.imageview.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     m_viewHolder.imageview.setPadding(8, 8, 8, 8); 

     convertView.setTag(m_viewHolder); 

    } 
    else 
    { 
     // imageview = (ImageView) convertView; 
     m_viewHolder = (ViewHolder) convertView.getTag(); 
    } 

    //following line will set your tick image's position so that even if your 
    //grid scrolls the tick image will not change its position 
    m_viewHolder.img_select.setTag(position); 

    m_viewHolder.imageview.setImageResource(Image[position]); 

    m_viewHolder.imageview.setOnClickListener(new View.OnClickListener() 
    { 

     @Override 
     public void onClick(View v) 
     { 
      int position = Integer.parseInt(v.getTag().toString()); 

      // using this position value which was set in tick image's set tag, 
      //you can set your tick image's visibility to visible or invisible. 
      //keep your tick image's visibility as invisible by default in your single_view xml layout file. 
     } 
    }); 

    return convertView; 
} 

public class ViewHolder 
{ 
    private ImageView imageview, img_select; 
} 
+0

让我试试这个.....真的很感谢你的努力@Android Weblineindia – 2015-04-06 03:55:07

相关问题