|
因為手機與BLE藍牙點選連接時
會需要知道藍牙連接與否的狀態
藍牙模組都是掃描到裝置後丟入inflate viewholer的getview()
這時只會知道裝置名稱及地址
點選Listview後,需要變更連接狀態
- public View getView(final int i, View view, ViewGroup viewGroup) {
- final ViewHolder viewHolder;
- // General ListView optimization code.
- if (view == null) {
- view = mInflator.inflate(R.layout.listitem_device, null);
- viewHolder = new ViewHolder();
- viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
- viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
- viewHolder.deviceConnect = (TextView) view.findViewById(R.id.device_connect);
- view.setTag(viewHolder);
- } else {
- viewHolder = (ViewHolder) view.getTag();
- }
- //增加點選變更部分
- view.setOnClickListener(new View.OnClickListener(){
- public void onClick(View v) {
- final BluetoothDevice device = mLeDeviceListAdapter.getDevice(i);
- if (device == null) return;
- final Intent intent = getIntent();
- mDeviceName = intent.getStringExtra(EXTRAS_DEVICE_NAME);
- mBluetoothGatt = device.connectGatt(MainActivity.this, false, mGattCallback);
- Intent gattServiceIntent = new Intent(MainActivity.this, BluetoothLeService.class);
- isServiceBind = bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE);
- if (BluetoothProfile.STATE_CONNECTED == 2) {
- viewHolder.deviceConnect.setText("CONNECTED");
- Log.d("Viewholder", "i=" + i + "CONNECTED");
- } else if (BluetoothProfile.STATE_CONNECTED == 1){
- viewHolder.deviceConnect.setText("CONNECTing");
- Log.d("Viewholder", "i=" + i + "CONNECTing");
- } else {
- viewHolder.deviceConnect.setText("dis CONNECT");
- Log.d("Viewholder", "i=" + i + "dis CONNECT");
- }
- }
- });
- //增加點選變更部分
複製代碼
參考文章:https://stackoverflow.com/questions/47092599/using-holder-for-textview-in-listview
|
|