找回密碼
 註冊
搜索
查看: 1473|回復: 0

[教學] Android 如何修改inflate裡的viewHolder裡的TextView值

[複製鏈接]
發表於 2020-3-15 21:15:50 | 顯示全部樓層 |閱讀模式
 
Push to Facebook
因為手機與BLE藍牙點選連接時
會需要知道藍牙連接與否的狀態

藍牙模組都是掃描到裝置後丟入inflate viewholer的getview()
這時只會知道裝置名稱及地址
點選Listview後,需要變更連接狀態
  1. public View getView(final int i, View view, ViewGroup viewGroup) {
  2.             final ViewHolder viewHolder;
  3.             // General ListView optimization code.
  4.             if (view == null) {
  5.                 view = mInflator.inflate(R.layout.listitem_device, null);
  6.                 viewHolder = new ViewHolder();
  7.                 viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
  8.                 viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
  9.                 viewHolder.deviceConnect = (TextView) view.findViewById(R.id.device_connect);
  10.                 view.setTag(viewHolder);
  11.             } else {
  12.                 viewHolder = (ViewHolder) view.getTag();
  13.             }

  14. //增加點選變更部分
  15.             view.setOnClickListener(new View.OnClickListener(){
  16.                 public void onClick(View v) {
  17.                     final BluetoothDevice device = mLeDeviceListAdapter.getDevice(i);
  18.                     if (device == null) return;
  19.                     final Intent intent = getIntent();
  20.                     mDeviceName = intent.getStringExtra(EXTRAS_DEVICE_NAME);
  21.                     mBluetoothGatt = device.connectGatt(MainActivity.this, false, mGattCallback);
  22.                     Intent gattServiceIntent = new Intent(MainActivity.this, BluetoothLeService.class);
  23.                     isServiceBind = bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE);
  24.                     if (BluetoothProfile.STATE_CONNECTED == 2) {
  25.                         viewHolder.deviceConnect.setText("CONNECTED");
  26.                         Log.d("Viewholder", "i=" + i + "CONNECTED");
  27.                     } else if (BluetoothProfile.STATE_CONNECTED == 1){
  28.                         viewHolder.deviceConnect.setText("CONNECTing");
  29.                         Log.d("Viewholder", "i=" + i + "CONNECTing");
  30.                     } else {
  31.                         viewHolder.deviceConnect.setText("dis CONNECT");
  32.                         Log.d("Viewholder", "i=" + i + "dis CONNECT");
  33.                     }
  34.                 }
  35.             });
  36. //增加點選變更部分
複製代碼


參考文章:https://stackoverflow.com/questions/47092599/using-holder-for-textview-in-listview
 
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

Archiver|手機版|小黑屋|TShopping

GMT+8, 2025-5-1 04:08 , Processed in 0.033474 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表