Android仿微信发表说说实现拍照、多图上传功能

2019-12-10 18:53:31刘景俊

 二、重点在GridAdapter

 (1)、定义一个变量 mMaxPosition,
 (2)、写一个获取最大位置的方法:用来获取item的最大位置。

 //重点在这里,当position==mMaxposition-1让"+"选择图片的默认图片显示。 
 //当目前最多6中图片,则最大7时,图片影藏。 
 if (position==mMaxPosition-1) { 
 holder.image.setImageResource(R.mipmap.ic_launcher); 
 holder.image.setVisibility(View.VISIBLE); 
 if(position==6&&mMaxPosition==7){ 
  holder.image.setImageResource(R.mipmap.ic_launcher); 
  holder.image.setVisibility(View.GONE); 
 } 
 } else { 
 final String path=listUrls.get(position); 
 Glide.with(MainActivity.this) 
   .load(new File(path)) 
   .placeholder(R.mipmap.default_error) 
   .error(R.mipmap.default_error) 
   .centerCrop() 
   .crossFade() 
   .into(holder.image); 
} 

(3)、关于图片的显示:

 private class GridAdapter extends BaseAdapter{ 
  private ArrayList<String> listUrls; 
  private int mMaxPosition; 
  private LayoutInflater inflater; 
  public GridAdapter(ArrayList<String> listUrls) { 
   this.listUrls = listUrls; 
   inflater = LayoutInflater.from(MainActivity.this); 
  } 
  public int getCount() { 
    mMaxPosition = listUrls.size()+1; 
   return mMaxPosition; 
  } 
  public int getMaxPosition(){ 
   return mMaxPosition; 
  } 
  @Override 
  public String getItem(int position) { 
   return listUrls.get(position); 
  } 
 
  @Override 
  public long getItemId(int position) { 
   return position; 
  } 
 
  @Override 
  public View getView(int position, View convertView, ViewGroup parent) { 
   ViewHolder holder = null; 
   if (convertView == null) { 
    holder = new ViewHolder(); 
    convertView = inflater.inflate(R.layout.item_image, parent,false); 
    holder.image = (ImageView) convertView.findViewById(R.id.imageView); 
    convertView.setTag(holder); 
   } else { 
    holder = (ViewHolder)convertView.getTag(); 
   } 
   Log.d("", "position:"+position+" mMaxPosition:"+mMaxPosition); 
    //重点在这里,当position==mMaxposition-1让"+"选择图片的默认图片显示。 
    //当目前最多6中图片,则最大7时,图片影藏。 
   if (position==mMaxPosition-1) { 
//    holder.image.setTag("default"); 
    holder.image.setImageResource(R.mipmap.ic_launcher); 
    holder.image.setVisibility(View.VISIBLE); 
    if(position==6&&mMaxPosition==7){ 
     holder.image.setImageResource(R.mipmap.ic_launcher); 
     holder.image.setVisibility(View.GONE); 
    } 
    } else { 
    final String path=listUrls.get(position); 
    Glide.with(MainActivity.this) 
      .load(new File(path)) 
      .placeholder(R.mipmap.default_error) 
      .error(R.mipmap.default_error) 
      .centerCrop() 
      .crossFade() 
      .into(holder.image); 
   }