我正在开发一个应用程序,我必须在其中连接到 Android 4.3 上的蓝牙设备。
我想每秒更新一次 Arraylist。
在我的应用程序中。DeviceControl.java将使用intent 和startActivity 传递参数。
Main.java将接收来自DeviceControl.java的参数并像下面的代码一样放入 Arraylist。
主.java
public class Main extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
onNewIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
// TODO Auto-generated method stub
super.onNewIntent(intent);
setIntent(intent);
for(int i = 0;i<5;i++)
{
if(address[i].length() != 1) {
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("name", name[i]);
item.put("address", address[i]);
item.put("RSSI", rssi[i]);
item.put("Battery", battery[i]);
list.add(item);
mdeviceAddress = address[i];
} else if(address[i].length() == 1)
break;
}
mHandler.postDelayed(addlist, 1000); //update the list
adapter = new SimpleAdapter(this, list, R.layout.device_list_name_address,
new String[] {"name", "address", "RSSI", "Battery"},
new int[] {R.id.device_name, R.id.device_address, R.id.device_rssi, R.id.device_battery} );
devicelist.setAdapter(adapter);
}
但它只会在DeviceControl.java启动意图时更新一次列表。我希望它总是在DeviceControl.java启动意图后更新列表。
我曾尝试在 Runnable 中键入 Arraylist 的代码,但它不起作用。
我应该怎么做才能使 Arraylist 自动更新?
编辑
我添加了以下可运行的代码
final Runnable addlist = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
for(int i = 0;i<5;i++)
{
if(address[i].length() != 1){
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
HashMap<String, Object> item = new HashMap<String, Object>();
item.put("name", name[i]);
item.put("address", address[i]);
item.put("RSSI", "11111:" + rssi[i]);
item.put("Battery", "22222:" + battery[i]);
list.add(item);
Log.v(TAG, "onNewIntent----------------------------");
mdeviceAddress = address[i];
Log.v(TAG, "address[" + i + "] = " + address[i]);
Log.v(TAG, "GATT[" + i + "] = " + gatt[i]);
//並連線到此Address
Intent gattServiceIntent = new Intent(Main.this, BluetoothLeService.class);
registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());
bindService(gattServiceIntent, mServiceConnection, BIND_AUTO_CREATE);
}else if(address[i].length() == 1)
break;
}
adapter.notifyDataSetChanged();
mHandler.postDelayed(this, 1500);
}
};
并mHandler.postDelayed(addlist, 1000);
在 for 循环后输入 OnNewIntent。该列表应该从
item.put("RSSI", rssi[i]);
item.put("Battery", battery[i]);
至
item.put("RSSI", "11111:" + rssi[i]);
item.put("Battery", "22222:" + battery[i]);
但这并没有改变什么。