Java 如何在onNewIntent和Android 4.3中每秒更新Arraylist?
我正在开发一个应用程序,我必须连接到Android 4.3上的蓝牙设备 我想每秒更新一次Arraylist 在我的申请表中。DeviceControl.java将使用intent和startActivity传输参数 Main.java将从DeviceControl.java接收参数,并像推拉代码一样放入Arraylist Main.javaJava 如何在onNewIntent和Android 4.3中每秒更新Arraylist?,java,android,android-intent,arraylist,android-4.3-jelly-bean,Java,Android,Android Intent,Arraylist,Android 4.3 Jelly Bean,我正在开发一个应用程序,我必须连接到Android 4.3上的蓝牙设备 我想每秒更新一次Arraylist 在我的申请表中。DeviceControl.java将使用intent和startActivity传输参数 Main.java将从DeviceControl.java接收参数,并像推拉代码一样放入Arraylist Main.java public class Main extends Activity { @Override protected void onCrea
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);
}
到
但是它没有改变任何事情。您是否使用了
notifyDataSetChanged()
来更新您的列表
如果没有,则可以在runnable中编写适配器.notifyDataSetChanged()
。这将更新您的列表。我希望这将对您有所帮助。请看演示
我猜notifyDataSetChanged()不起作用,因为适配器指向“旧列表”,而不是“新列表”。不要创建新的ArrayList,使用绑定到适配器的ArrayList试试这个:
ArrayList<HashMap<String, Object>> tmp = new ArrayList<HashMap<String,Object>>();
//set data
list.clear();
list.addAll(tmp);
ArrayList tmp=new ArrayList();
//设置数据
list.clear();
list.addAll(tmp);
希望能有所帮助。你确定onNewInten每秒钟都有人打电话吗?我不是每秒钟都打电话给onNewIntent,我只是打了一次。但是我希望它在每次调用后每秒更新一次。但是这些数组会发生什么变化:名称、电池、rssi、地址?当它第一次调用时,它会显示名称、地址、rssi、电池。我在onNewIntent中标记for循环,然后转到runnable。放入,但它没有显示任何内容,列表为空。我是否应该将for循环中的所有代码放入runnable??或者我只需要将adapter.notifyDataSetChanged()放入runnable??adapter中。notifyDataSetChanged()只是通知您的适配器列表中发生的更改,并更新列表,但您还需要编写代码,在线程内的列表中进行更改。请告诉我到底发生了什么变化。你能告诉我你在哪里更改列表吗。
item.put("RSSI", rssi[i]);
item.put("Battery", battery[i]);
item.put("RSSI", "11111:" + rssi[i]);
item.put("Battery", "22222:" + battery[i]);
ArrayList<HashMap<String, Object>> tmp = new ArrayList<HashMap<String,Object>>();
//set data
list.clear();
list.addAll(tmp);