蓝牙开发,之前在activity_main.xml中直接添加listview显示设备list没问题,但使用viewpager嵌套listview显示设备就显示不出设备了,求大神解答
MainActivity中的问题代码:
View view1 = this.getLayoutInflater().inflate(R.layout.layout2,null);
mListView = (ListView) view1.findViewById(R.id.ListBonded);
mListView = (ListView)findViewById(R.id.ListBonded);
mAdapter = new DeviceAdapter(mDeviceList,this);
mListView.setAdapter(mAdapter);
MainActivity中显示已绑定设备函数:
//查看已绑定设备
public void ShowBondDevice(View view){
showToast("刷新界面");
mBondedDeviceList = mController.getBondedDeviceList();
mAdapter.refresh(mBondedDeviceList);
mListView.setOnItemClickListener(bondedDeviceClick);
}
BluetoothController.java:
package com.example.ble5;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import java.util.ArrayList;
import java.util.List;
public class BluetoothController {
private BluetoothAdapter mAdapter;
public BluetoothController(){
mAdapter = BluetoothAdapter.getDefaultAdapter();
}
//判断当前设备是否支持蓝牙
public boolean isSupportBlueTooth(){
if (mAdapter != null){
return true;
}else {
return false;
}
}
public BluetoothAdapter getAdapter(){
return mAdapter;
}
//判断当前蓝牙状态
public boolean getBluetoothStatus(){
assert (mAdapter != null);
return mAdapter.isEnabled();
}
//打开蓝牙
public void turnOnBluetooth(Activity activity, int requestCode){
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
activity.startActivityForResult(intent,requestCode);
}
//关闭蓝牙
public void turnOffBluetooth(){
mAdapter.disable();
}
//搜索设备
public void findDevice(){
assert (mAdapter != null);
mAdapter.startDiscovery();
}
//查看绑定设备
public List<BluetoothDevice> getBondedDeviceList(){
return new ArrayList<>(mAdapter.getBondedDevices());
}
//打开可见
public void enableVisibly(Activity activity,int requestCode){
Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,300);
activity.startActivity(discoverableIntent);
}
}
DeviceAdapter.java:
package com.example.ble5;
import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.List;
public class DeviceAdapter extends BaseAdapter {
private List<BluetoothDevice> mData;
private Context mContext;
public DeviceAdapter(List<BluetoothDevice> data, Context context){
mData = data;
mContext = context.getApplicationContext();
}
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int i) {
return mData.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View itemView = view;
if (itemView == null){
itemView = LayoutInflater.from(mContext).inflate(android.R.layout.simple_list_item_2,viewGroup,false);
}
TextView line1 = (TextView)itemView.findViewById(android.R.id.text1);
TextView line2 = (TextView)itemView.findViewById(android.R.id.text2);
//获取对应蓝牙设备
BluetoothDevice device = (BluetoothDevice) getItem(i);
//显示名称
line1.setText(device.getName());
//显示地址
line2.setText(device.getAddress());
return itemView;
}
public void refresh(List<BluetoothDevice> data){
mData = data;
notifyDataSetChanged();
}
}