package com.example.meinwald.ui.area; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.database.DataSetObserver; import android.os.Build; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.meinwald.BuildConfig; import com.example.meinwald.R; import java.util.ArrayList; import java.util.Date; import java.util.List; import androidx.annotation.RequiresApi; import androidx.constraintlayout.widget.ConstraintLayout; public class AreaAdapter extends BaseAdapter { private final static String TAG = AreaAdapter.class.getSimpleName(); List areaList; LayoutInflater inflater; Context context; boolean deleted = false; Integer deletedPosition = null; public AreaAdapter(Context applicationContext, List areaList) { this.areaList = new ArrayList<>(); this.areaList = areaList; this.context = applicationContext; inflater = LayoutInflater.from(applicationContext); if (BuildConfig.DEBUG) { Log.d("AreaAdapter","size: " + areaList.size()); } } @Override public View getView(final int i, final View view, final ViewGroup viewGroup) { final View areaView = inflater.inflate(R.layout.area_element, null); final ConstraintLayout elementView = areaView.findViewById(R.id.areaElement); final ConstraintLayout infovView = areaView.findViewById(R.id.areaInfoView); final TextView title = (TextView) areaView.findViewById(R.id.areaInfoTitle); final TextView notice = (TextView) areaView.findViewById(R.id.areaInfoNotice); final TextView area = (TextView) areaView.findViewById(R.id.areaInfoArea); final ImageView icon = (ImageView) areaView.findViewById(R.id.areaIcon); final ImageView manageArea = (ImageView) areaView.findViewById(R.id.areaManageArea); context = areaView.getContext(); title.setText(areaList.get(i).getTitle()); notice.setText(areaList.get(i).getNotice()); icon.setImageBitmap(areaList.get(i).getImage()); if (areaList.get(i).getArea() != null) { area.setText(String. format("%.2f", areaList.get(i).getArea()) + " Quadratmeter"); } manageArea.setOnClickListener(new View.OnClickListener() { @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) @Override public void onClick(View v) { final AlertDialog.Builder builder = new AlertDialog.Builder(v.getRootView().getContext()); final View viewInflated = LayoutInflater.from(v.getRootView().getContext()).inflate(R.layout.area_management, viewGroup, false); builder.setView(viewInflated); builder.setCancelable(true); //get elements TextView title = viewInflated.findViewById(R.id.areaManageTitle); final TextView notice = viewInflated.findViewById(R.id.areaManageNotice); TextView gpscount = viewInflated.findViewById(R.id.areaManageGPSPoints); ImageView image = (ImageView) viewInflated.findViewById(R.id.areaManageImage); final TextView lastChecked = viewInflated.findViewById(R.id.areaManagementLastChecked); ImageView newNotice = (ImageView) viewInflated.findViewById(R.id.areaManageNewDescription); ImageView newGPS = (ImageView) viewInflated.findViewById(R.id.areaManageNewGPS); ImageView newImage = (ImageView) viewInflated.findViewById(R.id.areaManageNewImage); ImageView deleteArea = (ImageView) viewInflated.findViewById(R.id.areaManageDeleteArea); ImageView newDate = (ImageView) viewInflated.findViewById(R.id.areaManageNewDate); //set current values title.setText(areaList.get(i).getTitle()); notice.setText(areaList.get(i).getNotice()); if (areaList.get(i).getCheckHistory() != null) { lastChecked.setText(areaList.get(i).parseAndFormatLastCheckUpdate()); } if (areaList.get(i).getLocations() != null) { gpscount.setText(String.valueOf(areaList.get(i).getLocations().size())); } else { gpscount.setText(String.valueOf(0)); } if (areaList.get(i).getImage() != null) { image.setImageBitmap(areaList.get(i).getImage()); } newNotice.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final AlertDialog.Builder newbuilder = new AlertDialog.Builder(v.getRootView().getContext()); final View viewInflated = LayoutInflater.from(v.getRootView().getContext()).inflate(R.layout.area_management_notice, viewGroup, false); newbuilder.setView(viewInflated); final TextView noticeView = viewInflated.findViewById(R.id.areaManagementNoticeUserInput); noticeView.setText(areaList.get(i).getNotice()); newbuilder.setPositiveButton("Bestätigen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { areaList.get(i).setNotice(noticeView.getText().toString()); notice.setText(areaList.get(i).getNotice()); dialog.dismiss(); } }); newbuilder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); newbuilder.show(); }}); newDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final AlertDialog.Builder newbuilder = new AlertDialog.Builder(v.getRootView().getContext()); newbuilder.setTitle("Neu Kontrolle hinzufügen?"); newbuilder.setPositiveButton("Bestätigen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { areaList.get(i).addCheckDate(new Date()); lastChecked.setText(areaList.get(i).parseAndFormatLastCheckUpdate()); //notifyDataSetChanged(); if (BuildConfig.DEBUG) { for (OwnArea area : areaList) { Log.d(TAG, "areaList item: " + area.toString()); } } dialog.dismiss(); } }); newbuilder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); newbuilder.show(); }}); deleteArea.setOnClickListener(new View.OnClickListener() { @Override public void onClick(final View v) { final AlertDialog.Builder newbuilder = new AlertDialog.Builder(v.getRootView().getContext()); newbuilder.setTitle("Das Grundstück wirklich löschen?"); newbuilder.setPositiveButton("Bestätigen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { areaList.get(i).deleteFromExternalStorage(context); areaList.remove(i); notifyDataSetChanged(); if (BuildConfig.DEBUG) { for (OwnArea area: areaList) { Log.d(TAG, "areaList item: " + area.toString()); } } dialog.dismiss(); ((ViewGroup)viewInflated.getParent()).removeView(viewInflated); builder.show().cancel(); } }); newbuilder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); newbuilder.show(); }}); builder.setPositiveButton("Bestätigen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (areaList.size() > i && areaList.get(i) != null) { if (BuildConfig.DEBUG) { Log.d(TAG, "update area: " + areaList.get(i).toString()); } areaList.get(i).deleteFromExternalStorage(context); areaList.get(i).writeToExternalStorage(context); } if (BuildConfig.DEBUG) { for (OwnArea area: areaList) { Log.d(TAG, "areaList item: " + area.toString()); } } dialog.dismiss(); } }); builder.setNegativeButton("Abbrechen", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); } }); icon.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final AlertDialog.Builder builder = new AlertDialog.Builder(v.getRootView().getContext()); final View viewInflated = LayoutInflater.from(v.getRootView().getContext()).inflate(R.layout.image_large, viewGroup, false); builder.setView(viewInflated); final ConstraintLayout imageViewLayout = viewInflated.findViewById(R.id.taskLargeImageLayout); final ImageView imageView = viewInflated.findViewById(R.id.taskLargeImage); imageView.setImageBitmap(areaList.get(i).getImage()); builder.setNegativeButton("Zurück", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.show(); } }); elementView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast toast = Toast.makeText(context, "on long click!", Toast.LENGTH_SHORT); TextView tv = (TextView) toast.getView().findViewById(android.R.id.message); if( v != null) { //text align center tv.setGravity(Gravity.CENTER); } return true; } }); return areaView; } public boolean isDeleted() { return deleted; } public Integer getDeletedPosition() { return deletedPosition; } @Override public int getCount() { return areaList.size(); } @Override public Object getItem(int i) { return areaList.get(i); } @Override public long getItemId(int i) { return i; } }