用于自定义ListView的Android AsyncTask

时间:2015-12-08 11:22:47

标签: android android-asynctask

在我的Android应用中,我的自定义ListView包含EditTextSpinner

我的问题是,当我选择SpinnerspDevice)时,我需要在另一个微调器(spModel)中加载相应的值。我面临的问题是,当我在spDevice中选择spModel中的值后,在AsyncTask中加载了一段时间后的相应值,它就不会立即加载(有时数据加载不正确)。我觉得我们必须使用AsyncTask。任何人都可以帮助我为此创建private void spDevicesetItemSelectedListener(final DeviceHolder holder){ holder.spDevice.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view, int position,long id) { String strDevices =(String)parent.getSelectedItem(); //Get selected value from SpDevices ArrayList<String> lstModels = db.getAllModels(strDevices); // Creating adapter for spinner ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context,android.R.layout.simple_spinner_item, lstModels); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // attaching data adapter to spinner holder.spModel.setAdapter(dataAdapter); ,否则任何人都可以告诉我什么是解决此问题的最佳方法。

以下是我现在使用的代码

override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {

if let nextFoc = context.nextFocusedView as? YourCellName{

       nextFoc.backgroundColor = UIColor.redColor()

}

if let prevFocus = context.previouslyFocusedView as? YourCellName{

        prevFocus.backgroundColor = UIColor.clearColor()

}

2 个答案:

答案 0 :(得分:0)

它不需要,基本上AsyncTask用于长期运行的任务,如网络操作,数据库操作。有一件事提醒'AsyncTask'不需要更快的操作。它采取的延迟是从数据库中获取数据,所以使用AsyncTask,它不会加速加载。

答案 1 :(得分:0)

我通过调用AsyncTask解决了这个问题,它的工作完全符合预期。我觉得在Custom ListView中有多个Spinner并且值依赖于其他Spinner,这是最好的方法。如果我错了意味着纠正我

if(strDevices != null && ! strDevices.isEmpty()) {
  try {
       ArrayList<String> lstModels = new LongOperation().execute(strDevices).get(); // Call Async Task
       ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_item, lstModels);
       dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

       // attaching data adapter to spinner
       holder .spModel.setAdapter(dataAdapter);
 } catch (Exception e){
         e.printStackTrace();;
 }
}