2 回答

TA貢獻1813條經驗 獲得超2個贊
在適配器內創建一個方法來接收您的deviceName, ip, imgid參數。然后你只需要在點擊按鈕時調用它即可。
在適配器上:
public void refreshData(String[] deviceName, String[] ip, Integer[] imgid){
this.deviceName = deviceName;
this.ip = ip;
this.imgid = imgid;
notifyDataSetChanged();
}
然后點擊按鈕:
adapter.refreshData(yourDeviceNameVariable, yourIpVariable, yourImdidVariable);
我建議您將此代碼放入一個方法中,其中 deviceName、ip 和 imdid 變量是全局變量,并在刷新適配器之前單擊按鈕時調用該方法。
Devices d = Devices.getInstance();
String s = d.getString();
String[][] all = getDevices(s);
deviceName = all[0];
ip = all[1];
String[] pre_imgid = all[2];
int x = pre_imgid.length;
Integer[] imgid = new Integer[x];
for (int i = 0; i < x; i++){
switch(pre_imgid[i]){
case "0":
imgid[i] = R.drawable.large_circle_szary; break;
case "1":
imgid[i] = R.drawable.large_circle_czerwony; break;
case "2":
imgid[i] = R.drawable.large_circle_pomarancz; break;
case "3":
imgid[i] = R.drawable.large_circle_zielony; break;
default:
imgid[i] = R.drawable.large_circle_niebieski; break;
}
}

TA貢獻2051條經驗 獲得超10個贊
這是你需要解決的問題。我將為您提供更改要點,但您需要更新您的代碼。
在啟動/停止的 onclicklistener 中,您需要手動獲取所選對象并更新數據,其中視圖將動態更新。
在這里,您必須使用列表中的對象對父布局執行類似 settag() 的操作,我看到有多個列表,請使用要更新視圖的列表的對象。
例如:// your parentlayout.setTag(devicename[position])
在onclicklistner中,需要獲取這個對象
例如:// get your object from settag:- DeviceName dobj = (DeviceName) view.getTag()
更遠:
dobj.updateview, // something your logic of updating view.
就這樣,你可以開始了,但問題是你的班級設計。
建議:
創建另一個模型類,其中您的 deviname 和 ip 也是您想要在 onclicklistener 中編輯/更新的數據/字段
嘗試使用列表/映射,最好將列表傳遞給適配器。
添加回答
舉報