ListView未显示Wifi列表数组



我正在制作一个应用程序来扫描附近的WiFi网络,但每当我运行扫描按钮时,ListView都会保持为空。ListView显示在我的Android Studio预览中,但当我运行应用程序时,它只是空白的。我有一个arrayadapter,它正在提取可用的wifi网络,然后将其推送到活动中的ListView中。没有这样的运气。我不知道适配器是否正在接入wifi网络,或者它们没有显示在ListView上。XML文件中只有ListView和Button。这是XML文件。

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".WifiActivity">
<ListView
android:id="@+id/wifilist"
android:layout_width="match_parent"
android:layout_height="312dp"
android:layout_weight="0.97"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.295"
tools:layout_editor_absoluteX="0dp" />
<Button
android:id="@+id/scanbtn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="bottom"
android:layout_margin="15dp"
android:background="@android:color/holo_green_light"
android:text="SCAN"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.814"
tools:layout_editor_absoluteX="29dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

这是我的java代码。。


import androidx.appcompat.app.AppCompatActivity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class WifiActivity extends AppCompatActivity {
private WifiManager wifiManager;
private ListView listView;
private Button buttonscan;
private List<ScanResult> results;
private ArrayList<String> arrayList= new ArrayList<>();
private ArrayAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wifi);
buttonscan=findViewById(R.id.scanbtn);
buttonscan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
scanWifi();
}
});
listView=findViewById(R.id.wifilist);
wifiManager=(WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if(!wifiManager.isWifiEnabled()){
Toast.makeText(this, "WiFi is Disabled, Please enable Wifi", Toast.LENGTH_LONG).show();
wifiManager.setWifiEnabled(true);
}
adapter=new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
listView.setAdapter(adapter);
scanWifi();
}
private void scanWifi(){
arrayList.clear();
registerReceiver(wifiReciever, new IntentFilter(wifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
wifiManager.startScan();
Toast.makeText(this, "Scanning Wifi..", Toast.LENGTH_SHORT).show();
}
BroadcastReceiver wifiReciever=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
results=wifiManager.getScanResults();
unregisterReceiver(this);
for(ScanResult scanResult: results){
arrayList.add(scanResult.SSID);
adapter.notifyDataSetChanged();
}
};
};
}

我尝试将simple_list_item_1更改为请帮助:(

添加日志以检查列表是否为空

BroadcastReceiver wifiReciever=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
results=wifiManager.getScanResults();
unregisterReceiver(this);
for(ScanResult scanResult: results){
arrayList.add(scanResult.SSID);
adapter.notifyDataSetChanged();
}
Log.d("Received List",arrayList);
};
};

如果为空,请检查您的清单中是否定义了这些权限

ACCESS_FINE_LOCATION

ACCESS_COARSE_LOCATION

CHANGE_WIFI_STATE

最新更新