gpt4 book ai didi

Android:当我在单击微调器项目时动态添加新的 ListView 条目时,微调器会丢失它们的值吗?

转载 作者:行者123 更新时间:2023-11-29 21:43:14 25 4
gpt4 key购买 nike

我正在开发 Android 应用程序。在我有两个 Activity 的应用程序中,第一个 Activity 显示列表,第二个 Activity 在同一 Activity 中具有微调器和 ListView ,当用户从微调器中单击项目时,将显示 ListView 。当用户从第一个 Activity 导航到第二个 Activity 时,微调器会正确填充 ListView 。但问题是,在 ListView 正确显示后,微调项为空白。我不知道我哪里做错了。请任何人有解决方案。

这里我发布了一些第二个 Activity 的代码

public class ProjectDetailActivity extends SherlockListActivity {

private List<String> list = new ArrayList<String>();
private ArrayList<HashMap<String, String>> list2 = new ArrayList<HashMap<String,String>>();

protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_project_detail);

//get spinner item from server when user comes from first activity.
new LoadPhaseData().execute();

//Listener for Phase spinner

projSpinnerPhase.setOnItemSelectedListener((OnItemSelectedListener) new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {

//get listview when user click item from spinner
new LoadPhaseData().execute();
}

@Override
public void onNothingSelected(AdapterView<?> arg0) {

}
});
//this adapter for listview when click item from spinner
ListAdapter phaseAdapter = new SimpleAdapter(getApplicationContext(),
list2, R.layout.phase_avail_list_item,
new String[] {PHASE_NAME}, new int[]
{R.id.phaseName});
setListAdapter(phaseAdapter);


}
private class LoadPhaseData extends AsyncTask<String, Void, Void> {

@Override
protected Void doInBackground(String... params) {
//Here I am calling web service for spinner and listview
}

@Override
protected void onPostExecute(Void result) {
//following adapter for spinner item
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
getApplicationContext(),android.R.layout.simple_spinner_item,list);

dataAdapter.setDropDownViewResource(
android.R.layout.simple_spinner_dropdown_item);

projSpinnerPhase.setAdapter(dataAdapter);

}
}
}

提前致谢

最佳答案

这是因为在向 Spinner 添加新行时,您正在为具有新值的 Spinner 分配新的 Adapter。 Spinner 丢失了它的前一行以及之前的数据,并获得了另一个具有新数据行的适配器。您需要将这些值附加到现有数据持有者(可能是数组或 ArrayList),然后调用 adapter.notifyDataSetChanged();

您需要将 ArrayList 移动到类级别(即使其成为类字段),然后在下载数据时。只需将新数据附加到 list 并调用 adapter.notifyDataSetChanged();

关于Android:当我在单击微调器项目时动态添加新的 ListView 条目时,微调器会丢失它们的值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16545336/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com