From 0119e703ff4a8f3201610c2866702f7f92da0b26 Mon Sep 17 00:00:00 2001 From: Javier Date: Sun, 26 Jul 2020 18:11:10 +0200 Subject: initial import --- .../BtDeviceRecyclerViewAdapter.java | 96 ++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 app/src/main/java/com/javispedro/autobluetether/BtDeviceRecyclerViewAdapter.java (limited to 'app/src/main/java/com/javispedro/autobluetether/BtDeviceRecyclerViewAdapter.java') diff --git a/app/src/main/java/com/javispedro/autobluetether/BtDeviceRecyclerViewAdapter.java b/app/src/main/java/com/javispedro/autobluetether/BtDeviceRecyclerViewAdapter.java new file mode 100644 index 0000000..4515a95 --- /dev/null +++ b/app/src/main/java/com/javispedro/autobluetether/BtDeviceRecyclerViewAdapter.java @@ -0,0 +1,96 @@ +package com.javispedro.autobluetether; + +import android.bluetooth.BluetoothDevice; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@link RecyclerView.Adapter} that can display a list of {@link BluetoothDevice}, + * checkboxes show whether the device is in "enabled set" or not + */ +public class BtDeviceRecyclerViewAdapter extends RecyclerView.Adapter { + private final static String TAG = "BtDeviceRecyclerViewAd"; + + private List mValues = new ArrayList<>(); + private BtDeviceEnabledSetAdapter mEnabledAdapter; + + public void setValues(@NonNull List values) { + mValues = values; + Log.d(TAG, "values size:" + values.size()); + notifyDataSetChanged(); + } + + public void setBtDeviceEnabledSetAdapter(@NonNull BtDeviceEnabledSetAdapter adapter) { + mEnabledAdapter = adapter; + notifyDataSetChanged(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.fragment_device, parent, false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(final ViewHolder holder, int position) { + holder.setItem(mValues.get(position)); + } + + @Override + public int getItemCount() { + return mValues.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + private final View mView; + private final TextView mNameView; + private final TextView mAddressView; + private final CheckBox mCheckBox; + private BluetoothDevice mItem; + + public ViewHolder(View view) { + super(view); + mView = view; + mNameView = view.findViewById(R.id.name); + mAddressView = view.findViewById(R.id.address); + mCheckBox = view.findViewById(R.id.checked); + mCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + if (mEnabledAdapter != null && mItem != null) { + Log.d(TAG, "onCheckedChanged " + mItem.getName() + " " + isChecked); + mEnabledAdapter.set(mItem, isChecked); + } + } + }); + } + + public void setItem(BluetoothDevice device) { + mItem = device; + mNameView.setText(device.getName()); + mAddressView.setText(device.getAddress()); + if (mEnabledAdapter != null) { + mCheckBox.setChecked(mEnabledAdapter.contains(device)); + } + } + + @NonNull + @Override + public String toString() { + return super.toString() + " [" + mItem.getAddress() + "]"; + } + } +} \ No newline at end of file -- cgit v1.2.3