[英]How to update adapter in onCreate in antoher class?
所以我在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.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");
}
});
我可以从AsyncTask进行这样的更新,但是如何使用dataAdapter.notifyDataSetChanged()从另一个类更新适配器。 ?
new FtpGet(){
public void onPostExecute(ArrayList<String> result) {
list.clear();
list.addAll(result);
dataAdapter.notifyDataSetChanged();
}
}.execute();
另一个问题是,API 9设备无法通过setOnSelectedItem方法从上方执行AsyncTask,它不会更新微调器。
我认为您最好看一下“从活动中获取结果”和“从子活动中获取结果数据” ,因为在回到适配器的活动之前,不需要刷新适配器。
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();
在实现接口的活动中使用use接口,而在其他类中只是触发它。 它是您对适配器使用notify的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.