我正在做一个 Android 蓝牙应用程序来连接到我的 hc-05 蓝牙模块,并最终控制我制作的遥控船。当我在手机上启动应用程序时,我遇到了一个问题,列表视图没有显示。(我正在 android studio 上做这个项目)
这是我在activity_main.xml 文件中的代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/topLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:gravity="center_vertical"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Select A Pairing Device"
android:textColor="#0033FF"
android:textSize="16sp" />
<Button
android:id="@+id/button"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pair" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="150dp"
android:footerDividersEnabled="false"
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
这是 MainActivity 中的代码(当然还有更多内容,但这是我专门针对列表视图的代码
private void pairedDevicesList() {
// Check if the app has the necessary permissions
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH) != PackageManager.PERMISSION_GRANTED) {
// Permission not granted, request it
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.BLUETOOTH},
REQUEST_BLUETOOTH_PERMISSION);
return; // Exit the method early, permission request is pending
}
// Permission is granted, proceed with listing paired devices
Set<BluetoothDevice> pairedDevices = myBluetooth.getBondedDevices();
ArrayList<String> list = new ArrayList<>();
if (pairedDevices.size() > 0) {
for (BluetoothDevice bt : pairedDevices) {
list.add(bt.getName());
}
} else {
Toast.makeText(getApplicationContext(), "No Paired Bluetooth Devices Found.", Toast.LENGTH_LONG).show();
}
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
devicelist.setAdapter(adapter);
devicelist.setOnItemClickListener(myListClickListener);
}
private final AdapterView.OnItemClickListener myListClickListener = (parent, view, position, id) -> {
String info = ((TextView) view).getText().toString();
String address = info.substring(info.length()-17);
Intent i = new Intent(MainActivity.this, BoatControl.class);
i.putExtra(EXTRA_ADDRESS, address);
startActivity(i);
};
我调用onCreate()中的方法
btnPaired.setOnClickListener(v -> pairedDevicesList());
请保持您的代码完整。 尝试改变你的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/topLinearLayout"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:orientation="horizontal"
android:gravity="center_vertical"
android:padding="8dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
style="@style/TextAppearance.AppCompat.Title"
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Select A Pairing Device"
android:textColor="#0033FF" />
<Button
android:id="@+id/button"
style="@style/Widget.AppCompat.Button.Colored"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pair" />
</LinearLayout>
<ListView
android:id="@+id/listView"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>