在我的Android应用中,我的自定义ListView
包含EditText
和Spinner
。
我的问题是,当我选择Spinner
(spDevice
)时,我需要在另一个微调器(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()
}
答案 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();;
}
}