Невозможно динамически добавлять / удалять элементы в Gridview, используя пользовательский адаптер
Я работаю над gridview в Android, но я не могу решить сценарий, в котором я нахожусь, мне нужна небольшая помощь для добавления и удаления элементов в gridview .
Хорошо, во-первых, я показываю только 5 изображений в gridview, не более того, и я получаю изображения с сервера, и иногда сервер отправляет только два изображения, и они отображаются хорошо, но все же у меня есть возможность добавить еще три изображения из моей галереи и загрузить снова,
структура, которую я пытаюсь построить,
1-Если у меня всего пять изображений с сервера, то я не буду показывать кнопку добавления в последнем элементе gridview, а если у меня есть не более 5 изображений с сервера, gridview покажет дополнительный последний элемент с кнопкой add при нажатии что это займет для сборщиков изображений....
пока я достиг этого, теперь, когда я застрял, когда у меня есть 5 фото, я хочу удалить любой элемент, пусть предположим по индексу 2, поэтому, когда я нажимаю кнопку "Удалить", он должен удалить этот элемент в виде сетки и показать дополнительная кнопка добавления, так что она удовлетворяет требованию загрузки 5 фото, вот мой код. gridviewitem.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:padding="10dp"
android:layout_height="100dp">
<ImageView
android:id="@+id/edit_img"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/add_btn_placeholder" />
<ImageButton
android:id="@+id/btn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:background="@color/transparent"
android:src="@drawable/ic_close_round"
/>
CustomAdapter.java
public class PictureAdapter extends BaseAdapter {
private final Context mContext;
private final List<EditPicItem> pictureList;
private boolean isPicAddedImgSet = false;
public PictureAdapter(Context context, List<EditPicItem> items) {
this.mContext = context;
this.pictureList = items;
}
@Override
public int getCount() {
return pictureList.size();
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
convertView = layoutInflater.inflate(R.layout.gridviewitem, null);
}
final ImageView pic = convertView.findViewById(R.id.edit_img);
final ImageButton delbtn = convertView.findViewById(R.id.btn_close);
if(position == pictureList.size()){
pic.setImageResource(R.drawable.add_btn_placeholder);
return convertView;
}
EditPicItem item = pictureList.get(position);
if(!item.isAddPic) {
Picasso.with(mContext).load("urlxxxxx").into(pic);
delbtn.setVisibility(View.VISIBLE);
delbtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pictureList.remove(position);
notifyDataSetChanged();
}
});
}else{
delbtn.setVisibility(View.GONE);
pic.setClickable(true);
pic.setFocusable(true);
pic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//StartActivityforresult #imagePicker
notifyDataSetChanged();
}
});
}
return convertView;
}
}
Теперь я хочу, чтобы у меня было менее 5 изображений. В виде сетки должно отображаться добавление к последнему элементу таблицы, а при выборе нового изображения должно обновляться положение, а при удалении также должно обновляться положение и поддерживаться ограничение 5. Максимум изображений, я много искал, но пока смог. любая помощь будет оценена, спасибо.