superCPJ 2020-04-01 17:06 采纳率: 0%
浏览 214

蓝牙开发在ViewPager中嵌套ListView以显示设备,数据无法显示?

蓝牙开发,之前在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();
    }
}
  • 写回答

1条回答 默认 最新

  • 键盘舞者113 博客专家认证 2020-04-02 17:51
    关注

    你改成 ViewPager嵌套Fragment,Fragment实现列表

    评论

报告相同问题?

悬赏问题

  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了