У меня проблема с listviews, где всякий раз, когда я ищу устройство Bluetooth, он будет отображать список доступных устройств, как обычно, но при втором щелчке он будет генерировать дубликаты, поскольку результаты первого сканирования все еще остаются, так как мне избавиться от первое сканирование выполняется каждый раз, когда пользователь нажимает кнопку сканирования, и подключается к устройству Bluetooth, когда конечный пользователь нажимает адрес или имя устройств.
MainActivity.cs
public class BTReceiver : BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
var application = context.ApplicationContext;
string action = intent.Action;
if (action == BluetoothDevice.ActionFound)
{
BluetoothDevice device = intent.GetParcelableExtra(BluetoothDevice.ExtraDevice) as BluetoothDevice;
devices.Add(new Devices(device.Name, device.Address));
Devices item = list.First(d => d.name == device.Name);
//if devices does not exist in the list, add it in
if (item != null)
{
return;
}
aadapter = new CustomAdapter(_instance, devices);
availableList.Adapter = aadapter;
aadapter.NotifyDataSetChanged();
Toast toast = Toast.MakeText(Android.App.Application.Context, device.Name, ToastLength.Long);
toast.Show();
}
}
}
Device.cs
public class Devices
{
string _name;
string _address;
public string Name { get { return _name; } set { _name = value; } }
public string Address { get { return _address; } set { _address = value; } }
public Devices(string name, string address)
{
Name = name;
Address = address;
}
}
BTDevice.cs он же Пользовательский адаптер, который я создал
public class CustomAdapter : BaseAdapter<Devices>
{
private ObservableCollection<Devices> _devices;
private Activity _context;
public CustomAdapter(Activity context, ObservableCollection<Devices> devices) : base()
{
_context = context;
_devices = devices;
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var device = _devices[position];
View view = convertView;
if (view == null)
view = ((Activity)_context).LayoutInflater.Inflate(Resource.Layout.listView, null);
view.FindViewById<TextView>(Resource.Id.textName).Text = device.Name;
view.FindViewById<TextView>(Resource.Id.textAddress).Text = device.Address;
return view;
}
public override int Count
{
get { return _devices.Count; }
}
public override Devices this[int position]
{
get { return _devices[position]; }
}
}





Вы должны очистить устройства, прежде чем добавлять на них новые вещи. Что-то вроде ..
clear(devices)
devices.add(newdevice)
Имя 'list' не существует в текущем контексте, я не уверен, какой список мне использовать, потому что для каждого из них есть ошибка
Это просто код sudo. если у вас есть определенный список, и если вы продолжаете добавлять в него элементы, не заменяя и не очищая его, у вас будут дублированные элементы.
вы продолжаете добавлять устройство в список "устройств"
Хорошо, я исправил ошибки, теперь это приводит ко второму вопросу: как мне подключиться к нему, когда я щелкнул имя или адрес устройства
сейчас у меня ошибка со списком, ты хоть представляешь?