TShopping

 找回密碼
 註冊
搜索
查看: 1217|回復: 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, 2024-4-19 09:02 , Processed in 0.079736 second(s), 23 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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