package com.clj.blesample.tool.operation; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattService; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; import com.clj.blesample.R; import com.clj.blesample.tool.BluetoothService; import java.util.ArrayList; import java.util.List; public class ServiceListFragment extends Fragment { private TextView txt_name, txt_mac; private ResultAdapter mResultAdapter; private BluetoothService mBluetoothService; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mBluetoothService = ((OperationActivity) getActivity()).getBluetoothService(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_service_list, null); initView(v); showData(); return v; } private void initView(View v) { txt_name = (TextView) v.findViewById(R.id.txt_name); txt_mac = (TextView) v.findViewById(R.id.txt_mac); mResultAdapter = new ResultAdapter(getActivity()); ListView listView_device = (ListView) v.findViewById(R.id.list_service); listView_device.setAdapter(mResultAdapter); listView_device.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { BluetoothGattService service = mResultAdapter.getItem(position); mBluetoothService.setService(service); ((OperationActivity) getActivity()).changePage(1); } }); } private void showData() { String name = mBluetoothService.getName(); String mac = mBluetoothService.getMac(); BluetoothGatt gatt = mBluetoothService.getGatt(); txt_name.setText(String.valueOf("设备广播名:" + name)); txt_mac.setText(String.valueOf("MAC地址: " + mac)); mResultAdapter.clear(); for (final BluetoothGattService service : gatt.getServices()) { mResultAdapter.addResult(service); } mResultAdapter.notifyDataSetChanged(); } private class ResultAdapter extends BaseAdapter { private Context context; private List<BluetoothGattService> bluetoothGattServices; ResultAdapter(Context context) { this.context = context; bluetoothGattServices = new ArrayList<>(); } void addResult(BluetoothGattService service) { bluetoothGattServices.add(service); } void clear() { bluetoothGattServices.clear(); } @Override public int getCount() { return bluetoothGattServices.size(); } @Override public BluetoothGattService getItem(int position) { if (position > bluetoothGattServices.size()) return null; return bluetoothGattServices.get(position); } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView != null) { holder = (ViewHolder) convertView.getTag(); } else { convertView = View.inflate(context, R.layout.adapter_service, null); holder = new ViewHolder(); convertView.setTag(holder); holder.txt_title = (TextView) convertView.findViewById(R.id.txt_title); holder.txt_uuid = (TextView) convertView.findViewById(R.id.txt_uuid); holder.txt_type = (TextView) convertView.findViewById(R.id.txt_type); } BluetoothGattService service = bluetoothGattServices.get(position); String uuid = service.getUuid().toString(); holder.txt_title.setText(String.valueOf("服务" + "(" + position + ")")); holder.txt_uuid.setText(uuid); holder.txt_type.setText("类型(主服务)"); return convertView; } class ViewHolder { TextView txt_title; TextView txt_uuid; TextView txt_type; } } }