繁体   English   中英

如何在其他类的onCreate中更新适配器?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM