- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 OnItemClickListener 遇到问题。例如,我的列表中有 4 个蓝牙设备,我单击一个元素,应用程序尝试仅与列表的最后一个元素配对,而不是与我单击的元素配对
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import java.lang.reflect.Method;
import java.util.ArrayList;
public class bluetooth extends AppCompatActivity {
private ListView listView;
private ArrayList<String> mDeviceList = new ArrayList<String>();
private BluetoothAdapter mBluetoothAdapter;
private final static int REQUEST_ENABLE_BT=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bluetooth);
listView = (ListView) findViewById(R.id.listView);
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.startDiscovery();
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter);
if(!mBluetoothAdapter.isEnabled())
{
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
mBluetoothAdapter.startDiscovery();
registerReceiver(mReceiver, filter);
}
}
@Override
protected void onDestroy() {
unregisterReceiver(mReceiver);
super.onDestroy();
}
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, final Intent intent) {
final BluetoothDevice device = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
mDeviceList.add(bluetoothDevice.getName() + "\n"
+ bluetoothDevice.getAddress());
listView.setAdapter(new ArrayAdapter<String>(context,
android.R.layout.simple_list_item_1, mDeviceList));
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int pos, long id){
String devicep=listView.getAdapter().getItem(pos).toString();
Log.i("device",devicep);
pairDevice(device);
}
});
}
};
private void pairDevice(BluetoothDevice b1) {
try {
Method method = b1.getClass().getMethod("createBond", (Class[]) null);
method.invoke(b1, (Object[]) null);
} catch (Exception e) {
e.printStackTrace();
}
}
}
最佳答案
这可能是因为您已将最后发现的设备保存在变量“device”中,并且在 ListView onItemClick 中您正在调用pairDevice(device),无论单击的项目的位置如何。
您可能希望将所有广播发现的设备保存在一个列表中,并根据点击的项目从列表中获取相应的设备对象,如下所示:
private ArrayList<BluetoothDevice> mDevices = new ArrayList<BluetoothDevice>();
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, final Intent intent) {
final BluetoothDevice device = intent
.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
// Add the recently discovered device in a list
mDevices.add(bluetoothDevice);
mDeviceList.add(bluetoothDevice.getName() + "\n"
+ bluetoothDevice.getAddress());
listView.setAdapter(new ArrayAdapter<String>(context,
android.R.layout.simple_list_item_1, mDeviceList));
}
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapter, View view, int pos, long id){
String devicep=listView.getAdapter().getItem(pos).toString();
Log.i("device",device);
// Get the BluetoothDevice corresponding to the clicked item
pairDevice(mDevices.get(position));
}
});
}
};
关于java - Listview 和 OnItemClickListener(蓝牙设备),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40407265/
类型new AdapterView.OnItemClickListener(){}必须实现继承的抽象方法AdapterView.OnItemClickListener.onItemClick(Adap
当我在以下位置输入此代码时,出现“OnItemClickListener 无法解析为类型”的错误: package com.funkystudios.android.facts; import and
我已经检查过解决方案 here , here , here和 here 。它们都不适合我。 我的问题如下:我有一个仅由复选框组成的 ListView。我想在单击复选框后立即将相关复选框的当前状态保存到
我在 Android Studio 中设置了一个 Listview,但需要帮助编写 OnItemClickListner。 我已经尝试过该代码,但似乎不起作用。 public class MainAc
啊,我在这里做错了什么我已经为 ListView 和 onClick 设置了 onItemClickListener将它带到不同的 Activity ,但它告诉我它必须使用 OnItemClickli
我有一个 fragment ,其中包含一个 recyclerview,它有一个交错的网格布局管理器,其中 View 持有者只有一个图像。我试图在选择菜单选项(删除图标)后为 recyclerView
DataAccess data = new DataAccess(db); List countries = data.getCountries(); setListAdapter(new Array
我正在寻求构建一个程序,让用户从文本列表中点击,这会将他们带到另一个 Activity 。 我知道 RecyclerView 没有点击监听器,就像 ListView 一样,但是经过几次尝试,我无法让它
我想要 OnitemClickListener 用于 listview 但它对我不起作用。它给 Logcat 错误。 您的内容必须有一个 ListView ,其 id 属性为 R.id.list 我的
我在 GridView 中有一个 ItemClickListener。但是我的 itemclicklistener 没有被调用。 gridview 的项目点击没有 Activity @Override
我有两个列表,一个是自定义适配器,另一个是数组适配器。所以我希望 onItemClickListener 与自定义适配器 ListView 一起使用,并且当我开始对数组适配器使用相同的 ListVie
我有一个药物列表,当用户点击其中一个药物时,它将转到下一个显示药物详细信息的 Activity .. 下面的代码是带有药物列表的 Activity ..我知道我必须使用onclicklistener.
我认为这个问题说明了一切:我想为 ListView 创建自定义 OnItemClickListener。我想添加和更改 OnItemClickListener 的参数,但我如何创建自己的参数以便在我单
我有一个列表 fragment 显示我的自定义列表项,它由包含图像和文本等的相对布局组成。
我在类中有两个 listview,我不想为每个 listview 实现 OnClickListener,而是希望类实现 OnClickListener 并在单个覆盖方法 OnClickListener
我想在此 ListView 中实现 OnItemClickListener ,但是当我为此添加代码时,即使没有错误,我的应用程序也无法运行。当我单击 Listview 项目时,它会自动关闭。请帮助我,
我正在申请。我想从网络上的 Json 文件中获取一些信息。这行得通。现在我想要一个 onItemClickListener 到带有内容的 ListView 的项目。 onItemClickListen
我在从 ListItems 中获取选定的字符串时遇到一个问题,例如:考虑我的 ListItem 有一些元素只是被认为是一个,两个,三个出现在我的 taskLit 中,现在如果我点击 ListItem
我为 AutoCompleteTextView 设置了 setOnItemClickListener,并在 onItemClick 中,我已经根据所选值实现了需要发生的情况。该程序通过查看所选项目的索
我是 Android 开发的新手,我正在尝试构建一个 ListView,它使用 gson 从 Web 服务获取数据。我有一个模型类、一个列表类、一个适配器类和一个 Activity 类。 该列表工作正
我是一名优秀的程序员,十分优秀!