发布内容界面添加多张图片。可实现多张图片加载和删除功能
点击添加图片功能放在附件zip包里面,把包解压放入项目中,成library就可以
添加自定义布局:
<com.xxx.MyGridView
android:id="@+id/gv_imgs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:horizontalSpacing="5dp"
android:numColumns="4"
android:verticalSpacing="5dp" />
自定义myGridview.java:
public class MyGridView extends GridView {
public MyGridView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public MyGridView(Context context) {
super(context);
}
public MyGridView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
发布界面代码功能:
MyGridView gv_imgs;
private ImageAdapter mAdapter;
private List<String> mList = new ArrayList<>();
mAdapter = new ImageAdapter(mList, this);
mAdapter.setCallback(new IDeletePicCallback() {
@Override
public void callBack(int position) {
mList.remove(position);
}
});
gv_imgs.setAdapter(mAdapter);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != RESULT_OK) {
return;
}
if (requestCode == REQUEST_IMAGE) {
List<String> list = data.getStringArrayListExtra(MultiImageSelectorActivity.EXTRA_RESULT);
if (list != null && list.size() >= 0) {
mList.addAll(list);
mAdapter.notifyDataSetChanged();
}
}
}
适配器 ImageAdapter.java:
public class ImageAdapter extends BaseAdapter {
private List<String> list;
private Context context;
private IDeletePicCallback callback;
public void setCallback(IDeletePicCallback callback) {
this.callback = callback;
}
public ImageAdapter(List<String> list, Context context) {
this.list = list;
this.context = context;
}
@Override
public int getCount() {
if (list == null || list.size() <= 0) {
return 1;
} else {
if (list.size() >= 9) {
return 9;
} else {
return list.size() + 1;
}
}
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_pic_add, parent, false);
}
ImageView iv_del = ViewHolder.get(convertView, R.id.iv_item_del);
LinearLayout iv_add = ViewHolder.get(convertView, R.id.iv_item_add);
final ImageView iv_pic = ViewHolder.get(convertView, R.id.iv_item_pic);
if (list.size() >= 9 && position == 8) {
iv_add.setVisibility(View.GONE);
iv_del.setVisibility(View.VISIBLE);
iv_pic.setVisibility(View.VISIBLE);
Glide.with(context).load(list.get(position)).diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop().into(iv_pic);
} else {
if (position == list.size()) {
iv_add.setVisibility(View.VISIBLE);
iv_del.setVisibility(View.GONE);
iv_pic.setVisibility(View.GONE);
} else {
iv_add.setVisibility(View.GONE);
iv_del.setVisibility(View.VISIBLE);
iv_pic.setVisibility(View.VISIBLE);
Glide.with(context).load(list.get(position)).diskCacheStrategy(DiskCacheStrategy.ALL).centerCrop().into(iv_pic);
}
}
iv_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context,"5555",Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, MultiImageSelectorActivity.class);
intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, 9 - list.size());
((Activity) context).startActivityForResult(intent, REQUEST_IMAGE);
}
});
final int pos = position;
iv_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (callback != null) {
callback.callBack(pos);
}
notifyDataSetChanged();
}
});
iv_pic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ImagePagerActivity.class);
intent.putExtra(ImagePagerActivity.EXTRA_IMAGE_INDEX, pos);
// ArrayList<String> list = new ArrayList<String>();
// list.add("file://" + img.path);
intent.putStringArrayListExtra(ImagePagerActivity.EXTRA_IMAGE_URLS, (ArrayList<String>) list);
context.startActivity(intent);
}
});
return convertView;
}
}
适配器布局文件item_pic_add.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/iv_item_pic"
android:layout_marginTop="15dp"
android:layout_width="75dp"
android:layout_height="75dp"
android:background="#eeede9"
android:scaleType="centerCrop"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<RelativeLayout
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_marginLeft="5dp">
<ImageView
android:id="@+id/iv_item_del"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentRight="true"
android:src="@drawable/img_delete" />
</RelativeLayout>
<LinearLayout
android:id="@+id/iv_item_add"
android:layout_marginTop="10dp"
android:layout_width="75dp"
android:layout_height="75dp"
android:orientation="vertical"
android:gravity="center"
android:scaleType="centerCrop"
android:background="#f2f2f2"
android:visibility="gone">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:src="@drawable/img_photo_add"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="添加图片"
android:textSize="12sp"
android:layout_marginTop="5dp"
android:textColor="#c6c6c6"/>
</LinearLayout>
</RelativeLayout>