DeviceListAdapter implement delete device.
This commit is contained in:
parent
22230a4cbc
commit
1034087553
3 changed files with 60 additions and 14 deletions
|
@ -1,10 +1,13 @@
|
||||||
package dev.nuculabs.nucuhub.ui.settings.device;
|
package dev.nuculabs.nucuhub.ui.settings.device;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.BaseAdapter;
|
import android.widget.BaseAdapter;
|
||||||
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import dev.nuculabs.nucuhub.R;
|
import dev.nuculabs.nucuhub.R;
|
||||||
import dev.nuculabs.nucuhub.domain.Device;
|
import dev.nuculabs.nucuhub.domain.Device;
|
||||||
|
@ -12,18 +15,23 @@ import dev.nuculabs.nucuhub.domain.Device;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class DeviceListAdapter extends BaseAdapter {
|
public class DeviceListAdapter extends BaseAdapter {
|
||||||
|
private final String TAG = DeviceListAdapter.class.getName();
|
||||||
private final ArrayList<Device> items = new ArrayList<>();
|
private final ArrayList<Device> items = new ArrayList<>();
|
||||||
private final Context context;
|
|
||||||
private final LayoutInflater inflater;
|
private final LayoutInflater inflater;
|
||||||
|
private final DeleteDeviceAction deleteDeviceAction;
|
||||||
|
private final StarDeviceAction starDeviceAction;
|
||||||
|
private final DeviceManagementDialog deviceManagementDialog;
|
||||||
|
|
||||||
|
|
||||||
public DeviceListAdapter(Context context) {
|
public DeviceListAdapter(Context context, DeviceManagementDialog dmd) {
|
||||||
this.context = context;
|
|
||||||
this.inflater = LayoutInflater.from(context);
|
this.inflater = LayoutInflater.from(context);
|
||||||
|
this.deleteDeviceAction = new DeleteDeviceAction();
|
||||||
|
this.starDeviceAction = new StarDeviceAction();
|
||||||
|
this.deviceManagementDialog = dmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
public DeviceListAdapter(ArrayList<Device> items, Context context) {
|
public DeviceListAdapter(ArrayList<Device> items, Context context, DeviceManagementDialog dmd) {
|
||||||
this(context);
|
this(context, dmd);
|
||||||
this.items.addAll(items);
|
this.items.addAll(items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,16 +56,50 @@ public class DeviceListAdapter extends BaseAdapter {
|
||||||
if (view == null) {
|
if (view == null) {
|
||||||
view = inflater.inflate(R.layout.settings_device_list_item, null);
|
view = inflater.inflate(R.layout.settings_device_list_item, null);
|
||||||
}
|
}
|
||||||
final TextView text = view.findViewById(R.id.settingsDeviceListDeviceListItemText);
|
final TextView text = view.findViewById(R.id.settings_device_list_item_text);
|
||||||
text.setText(items.get(position).toString());
|
final TextView devicePosition = view.findViewById(R.id.settings_device_list_item_position);
|
||||||
|
final ImageButton deleteButton = view.findViewById(R.id.settings_device_list_item_delete_button);
|
||||||
|
final ImageButton starButton = view.findViewById(R.id.settings_device_list_item_select_button);
|
||||||
|
|
||||||
// TODO: Add click listeners for Delete And Select Buttons.
|
text.setText(items.get(position).toString());
|
||||||
// TODO: Mark selected item row?
|
devicePosition.setText(Integer.toString(position));
|
||||||
|
|
||||||
|
deleteButton.setOnClickListener(deleteDeviceAction);
|
||||||
|
starButton.setOnClickListener(starDeviceAction);
|
||||||
|
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void notifyDataSetChanged() {
|
||||||
|
super.notifyDataSetChanged();
|
||||||
|
deviceManagementDialog.updatePreferenceEntryValues();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean add(Device device) {
|
public boolean add(Device device) {
|
||||||
|
Log.d(TAG, "Adding item " + device.toString());
|
||||||
return items.add(device);
|
return items.add(device);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class DeleteDeviceAction implements View.OnClickListener {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
View parentContainer = (View) v.getParent().getParent();
|
||||||
|
TextView positionText = parentContainer.findViewById(R.id.settings_device_list_item_position);
|
||||||
|
items.remove(Integer.parseInt(positionText.getText().toString()));
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class StarDeviceAction implements View.OnClickListener {
|
||||||
|
private final String TAG = StarDeviceAction.class.getName();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
// TODO: Highlight selected item row?
|
||||||
|
LinearLayout parent = (LinearLayout) v.getParent().getParent();
|
||||||
|
CharSequence text = ((TextView) parent.getChildAt(0)).getText();
|
||||||
|
Log.i(TAG, "StarDeviceAction " + text.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ public class DeviceManagementDialog extends Dialog {
|
||||||
final ListView deviceListView = requireViewById(R.id.settings_device_dialog_list);
|
final ListView deviceListView = requireViewById(R.id.settings_device_dialog_list);
|
||||||
final Button addDeviceButton = requireViewById(R.id.settings_device_add_button);
|
final Button addDeviceButton = requireViewById(R.id.settings_device_add_button);
|
||||||
deviceTextInputLayout = requireViewById(R.id.settings_device_input_device);
|
deviceTextInputLayout = requireViewById(R.id.settings_device_input_device);
|
||||||
adapter = new DeviceListAdapter(getContext());
|
adapter = new DeviceListAdapter(getContext(), this);
|
||||||
|
|
||||||
deviceListView.setAdapter(adapter);
|
deviceListView.setAdapter(adapter);
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ public class DeviceManagementDialog extends Dialog {
|
||||||
dismiss();
|
dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePreferenceEntryValues() {
|
public void updatePreferenceEntryValues() {
|
||||||
int itemsLength = adapter.getCount();
|
int itemsLength = adapter.getCount();
|
||||||
CharSequence[] entries = new CharSequence[itemsLength];
|
CharSequence[] entries = new CharSequence[itemsLength];
|
||||||
HashSet<String> entriesSet = new HashSet<>();
|
HashSet<String> entriesSet = new HashSet<>();
|
||||||
|
|
|
@ -7,19 +7,23 @@
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content" android:id="@+id/settingsDeviceListDeviceListItemText"
|
android:layout_height="wrap_content" android:id="@+id/settings_device_list_item_text"
|
||||||
tools:text="Device Name" android:textSize="18sp"/>
|
tools:text="Device Name" android:textSize="18sp"/>
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content" android:id="@+id/settings_device_list_item_position"
|
||||||
|
android:visibility="gone"/>
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp" android:layout_weight="1">
|
android:layout_height="0dp" android:layout_weight="1">
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:layout_width="100dp"
|
android:layout_width="100dp"
|
||||||
android:layout_height="wrap_content" android:id="@+id/settingsDeviceListDeviceItemSelectButton"
|
android:layout_height="wrap_content" android:id="@+id/settings_device_list_item_select_button"
|
||||||
android:src="@drawable/ic_baseline_star_border_24"
|
android:src="@drawable/ic_baseline_star_border_24"
|
||||||
android:contentDescription="@string/select_icon"/>
|
android:contentDescription="@string/select_icon"/>
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:layout_width="100dp"
|
android:layout_width="100dp"
|
||||||
android:layout_height="wrap_content" android:id="@+id/settingsDeviceListDeviceItemDeleteButton"
|
android:layout_height="wrap_content" android:id="@+id/settings_device_list_item_delete_button"
|
||||||
android:src="@drawable/ic_baseline_delete_24" android:contentDescription="@string/delete_icon"/>
|
android:src="@drawable/ic_baseline_delete_24" android:contentDescription="@string/delete_icon"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
Loading…
Reference in a new issue