Use ViewBinding for activities.

This commit is contained in:
Dennis Guse
2020-10-31 23:26:34 +01:00
parent 9cebb1013c
commit 0f92a37146
29 changed files with 296 additions and 376 deletions
@@ -30,15 +30,10 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.google.android.material.textfield.TextInputEditText;
import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
@@ -46,6 +41,7 @@ import java.io.IOException;
import de.dennisguse.opentracks.content.data.Marker;
import de.dennisguse.opentracks.content.data.Track;
import de.dennisguse.opentracks.content.provider.ContentProviderUtils;
import de.dennisguse.opentracks.databinding.MarkerEditBinding;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.util.FileUtils;
import de.dennisguse.opentracks.util.IntentUtils;
@@ -67,7 +63,7 @@ public class MarkerEditActivity extends AbstractActivity {
private static final String TAG = MarkerEditActivity.class.getSimpleName();
private Track.Id trackId;
private TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection();
private final TrackRecordingServiceConnection trackRecordingServiceConnection = new TrackRecordingServiceConnection();
private Marker marker;
private MenuItem insertPhotoMenuItem;
@@ -77,11 +73,7 @@ public class MarkerEditActivity extends AbstractActivity {
private boolean hasCamera;
// UI elements
private TextInputEditText markerName;
private AutoCompleteTextView markerType;
private TextInputEditText markerDescription;
private ImageView markerPhoto;
private ImageView markerDeletePhotoBtn;
private MarkerEditBinding viewBinding;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -93,32 +85,24 @@ public class MarkerEditActivity extends AbstractActivity {
hasCamera = getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY);
// Setup UI elements
markerName = findViewById(R.id.marker_edit_name);
markerType = findViewById(R.id.marker_edit_marker_type);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.marker_types, android.R.layout.simple_dropdown_item_1line);
markerType.setAdapter(adapter);
markerDescription = findViewById(R.id.marker_edit_description);
markerPhoto = findViewById(R.id.marker_edit_photo);
markerDeletePhotoBtn = findViewById(R.id.marker_edit_photo_delete);
markerDeletePhotoBtn.setOnClickListener(v -> {
viewBinding.markerEditMarkerType.setAdapter(adapter);
viewBinding.markerEditPhotoDelete.setOnClickListener(v -> {
if (marker != null && marker.hasPhoto()) {
marker.setPhotoUrl(null);
}
markerPhoto.setImageBitmap(null);
viewBinding.markerEditPhoto.setImageBitmap(null);
photoUri = null;
hideAndShowOptions();
});
Button cancel = findViewById(R.id.marker_edit_cancel);
cancel.setOnClickListener(v -> finish());
viewBinding.markerEditCancel.setOnClickListener(v -> finish());
final boolean isNewMarker = markerId == null;
setTitle(isNewMarker ? R.string.menu_insert_marker : R.string.menu_edit);
Button done = findViewById(R.id.marker_edit_done);
done.setText(isNewMarker ? R.string.generic_add : R.string.generic_save);
done.setOnClickListener(v -> {
viewBinding.markerEditDone.setText(isNewMarker ? R.string.generic_add : R.string.generic_save);
viewBinding.markerEditDone.setOnClickListener(v -> {
if (isNewMarker) {
addMarker();
} else {
@@ -132,10 +116,10 @@ public class MarkerEditActivity extends AbstractActivity {
if (nextMarkerNumber == -1) {
nextMarkerNumber = 0;
}
markerName.setText(getString(R.string.marker_name_format, nextMarkerNumber));
markerName.selectAll();
markerType.setText("");
markerDescription.setText("");
viewBinding.markerEditName.setText(getString(R.string.marker_name_format, nextMarkerNumber));
viewBinding.markerEditName.selectAll();
viewBinding.markerEditMarkerType.setText("");
viewBinding.markerEditDescription.setText("");
} else {
marker = new ContentProviderUtils(this).getMarker(markerId);
if (marker == null) {
@@ -143,9 +127,9 @@ public class MarkerEditActivity extends AbstractActivity {
finish();
return;
}
markerName.setText(marker.getName());
markerType.setText(marker.getCategory());
markerDescription.setText(marker.getDescription());
viewBinding.markerEditName.setText(marker.getName());
viewBinding.markerEditMarkerType.setText(marker.getCategory());
viewBinding.markerEditDescription.setText(marker.getDescription());
if (marker.hasPhoto()) {
photoUri = marker.getPhotoURI();
}
@@ -183,8 +167,9 @@ public class MarkerEditActivity extends AbstractActivity {
}
@Override
protected int getLayoutResId() {
return R.layout.marker_edit;
protected View getRootView() {
viewBinding = MarkerEditBinding.inflate(getLayoutInflater());
return viewBinding.getRoot();
}
@Override
@@ -256,7 +241,7 @@ public class MarkerEditActivity extends AbstractActivity {
insertPhotoMenuItem.setVisible(!isPhotoSet);
insertGalleryImgMenuItem.setVisible(!isPhotoSet);
}
markerDeletePhotoBtn.setVisibility(isPhotoSet ? View.VISIBLE : View.GONE);
viewBinding.markerEditPhotoDelete.setVisibility(isPhotoSet ? View.VISIBLE : View.GONE);
}
/**
@@ -270,7 +255,7 @@ public class MarkerEditActivity extends AbstractActivity {
try (ParcelFileDescriptor pfd = getContentResolver().openFileDescriptor(uri, "r")) {
FileDescriptor fd = pfd.getFileDescriptor();
Bitmap bitmap = BitmapFactory.decodeFileDescriptor(fd);
markerPhoto.setImageBitmap(bitmap);
viewBinding.markerEditPhoto.setImageBitmap(bitmap);
hideAndShowOptions();
} catch (IOException e) {
Log.e(TAG, e.getMessage());
@@ -291,16 +276,16 @@ public class MarkerEditActivity extends AbstractActivity {
private void addMarker() {
trackRecordingServiceConnection.addMarker(this,
markerName.getText().toString(),
markerType.getText().toString(),
markerDescription.getText().toString(),
viewBinding.markerEditName.getText().toString(),
viewBinding.markerEditMarkerType.getText().toString(),
viewBinding.markerEditDescription.getText().toString(),
photoUri != null ? photoUri.toString() : null);
}
private void saveMarker() {
marker.setName(markerName.getText().toString());
marker.setCategory(markerType.getText().toString());
marker.setDescription(markerDescription.getText().toString());
marker.setName(viewBinding.markerEditName.getText().toString());
marker.setCategory(viewBinding.markerEditMarkerType.getText().toString());
marker.setDescription(viewBinding.markerEditDescription.getText().toString());
marker.setPhotoUrl(photoUri != null ? photoUri.toString() : null);
new ContentProviderUtils(this).updateMarker(this, marker);