Java 如何在antoher类的onCreate中更新适配器?
所以我在onCreate方法中有一个DataAdapter,我想从另一个类更新它Java 如何在antoher类的onCreate中更新适配器?,java,android,android-asynctask,android-arrayadapter,Java,Android,Android Asynctask,Android Arrayadapter,所以我在onCreate方法中有一个DataAdapter,我想从另一个类更新它 main_spinList = (Spinner) findViewById(R.id.main_spinList); ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list); dataAdapter.setDrop
main_spinList = (Spinner) findViewById(R.id.main_spinList);
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,list);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
main_spinList.setAdapter(dataAdapter);
//=========================================Spinner==================
main_spinList.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
filepath = String.valueOf(main_spinList.getSelectedItem());
}
public void onNothingSelected(AdapterView<?> arg0) {
Log.e("klkl", "klkl");
}
});
main\u微调列表=(微调器)findViewById(R.id.main\u微调列表);
ArrayAdapter dataAdapter=新的ArrayAdapter(这是android.R.layout.simple\u微调器\u项,列表);
dataAdapter.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉项);
main_spinList.setAdapter(dataAdapter);
//===================================================================旋转器==================
main_spinList.setOnItemSelectedListener(新的OnItemSelectedListener(){
已选择公共视图(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
filepath=String.valueOf(main_spinList.getSelectedItem());
}
未选择公共无效(AdapterView arg0){
Log.e(“klkl”、“klkl”);
}
});
我可以从AsyncTask这样更新,但是如何使用dataAdapter.notifyDataSetChanged()从另一个类更新适配器强>
new FtpGet(){
public void onPostExecute(ArrayList<String> result) {
list.clear();
list.addAll(result);
dataAdapter.notifyDataSetChanged();
}
}.execute();
new-FtpGet(){
PostExecute上的公共void(ArrayList结果){
list.clear();
list.addAll(结果);
dataAdapter.notifyDataSetChanged();
}
}.execute();
另一个问题是,API 9设备无法在setOnSelectedItem方法中执行类似上面所述的异步任务,它不会更新微调器。在实现接口的活动中使用接口,而在另一个类中只触发它。这是用于适配器的notify方法。我认为您最好查看和,因为在返回到适配器的活动之前,您不需要刷新适配器
onActivityResult()
将允许您从子活动获取状态,并且您可以在返回时从同一活动刷新适配器
在适配器活动中,将以下代码放在启动其他活动的位置:
Intent i = new Intent(this, ActivityTwo.class);
startActivityForResult(i, REQUEST_CODE);
并添加此方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
if (data.hasExtra("result")) {
ArrayList<String> result = data.getExtras().getSerializableExtra("result");
list.addAll(result);
dataAdapter.notifyDataSetChanged();
}
}
}
你应该每个帖子只有一个问题,为“另一个问题…”发布另一个问题
Intent data = new Intent();
data.putExtra("result", result);
setResult(RESULT_OK, data);
finish();