2015-04-03 64 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

相關問題