所以在我的MainActivity中有3个房间(来自服务器)。当我点击它们时弹出窗口打开。这个弹出窗口将显示roomId列表(点击列表视图项目)。这样可以正常工作。
现在我需要这样。在弹出单击下一个按钮下一个房间用api来获取它的模块是调用并更新列表视图。 我是怎么做到的?
问题是: - 无论何时去做总是打开新的弹出窗口。
如图所示,我需要更改工具栏右箭头按钮上列表视图的内容。 我的listview是popup.so当我更改listview的内容时,另一个新的弹出窗口打开新列表。
这是我的第一个列表视图(我加载了所有图像)
modules_list.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0,
android.view.View arg1, int arg2, long arg3) {
editor.putInt("response_position",arg2).commit();
editor.putString("roomid",response.getRooms()[arg2+1].getRooms_id().getRoomId()).commit();
String serverURL = "http://dashboard.droidhomes.in/api/module?room_id=" + response.getRooms()[arg2].getRooms_id().getRoomId();
// Use AsyncTask execute Method To Prevent ANR11 Problem
new GetallModules().execute(serverURL);
}
});
GetAllmodules类获取Room的所有模块和开关: -
private class GetallModules extends AsyncTask<String, Void, Void> {
// Required initialization
// private final HttpClient Client = new DefaultHttpClient();
private String Content;
private String Error = null;
private ProgressDialog Dialog = new ProgressDialog(
MainActivity.this);
protected void onPreExecute() {
// NOTE: You can call UI Element here.
Dialog.setMessage("Please wait..");
Dialog.show();
}
// Call after onPreExecute method
protected Void doInBackground(String... urls) {
/************ Make Post Call To Web Server ***********/
BufferedReader reader = null;
try {
// Defined URL where to send data
URL url = new URL(urls[0]);
// Send POST data request
pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
editor = pref.edit();
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
String auth_token = pref.getString("auth_token", "");
conn.setRequestProperty("Authorization", auth_token);
reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while ((line = reader.readLine()) != null) {
// Append server response in string
sb.append(line + "\n");
}
// Append Server Response To Content String
Content = sb.toString();
} catch (Exception ex) {
Error = ex.getMessage();
} finally {
try {
reader.close();
} catch (Exception ex) {
}
}
/*****************************************************/
return null;
}
protected void onPostExecute(Void unused) {
// NOTE: You can call UI Element here.
// Close progress dialog
// Content=Content.replaceAll("<string>","");
// Content=Content.replaceAll("</string>", "");
Dialog.dismiss();
if (Error != null) {
Toast toast = Toast.makeText(getApplicationContext(),
"Bad request", Toast.LENGTH_LONG);
toast.show();
// uiUpdate.setText("Output : " + Error);
} else {
// Show Response Json On Screen (activity)
// uiUpdate.setText(Content);
/****************** Start Parse Response JSON Data *************/
// String OutputData = "";
// JSONObject jsonResponse;
Gson gson = new Gson();
final SearchResponse response = gson.fromJson(Content,
SearchResponse.class);
if (response.getStatus() == true) {
//response.getAuth_token()
if (response.getModule().length > 0) {
LayoutInflater li1 = LayoutInflater.from(MainActivity.this);
View promptsView = li1.inflate(R.layout.prompts_modulesdialog1, null);
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(MainActivity.this);
alertDialogBuilder.setView(promptsView);
ListView list_modules = (ListView) promptsView.findViewById(R.id.lv_modules);
TextView tv_roomname = (TextView) promptsView.findViewById(R.id.tv_roomName);
ImageView iv_left=(ImageView)promptsView.findViewById(R.id.iv_left);
ImageView iv_right=(ImageView)promptsView.findViewById(R.id.iv_right);
ArrayList<String> switches = new ArrayList<String>();
iv_right.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String room_id=pref.getString("roomid","");
String serverURL = "http://dashboard.droidhomes.in/api/module?room_id=" + room_id;
// Use AsyncTask execute Method To Prevent ANR11 Problem
new GetallModules().execute(serverURL);
}
});
for (int i = 0; i < response.getModule().length; i++) {
tv_roomname.setText(response.getModule()[i].getRoom_title());
for (int j = 0; j < response.getModule()[i].getSwitches().length; j++) {
if (response.getModule()[i].getModule_name().equals(response.getModule()[i].getSwitches()[j].getModule_name_switches())) {
switches.add(response.getModule()[i].getSwitches()[j].getSwitch_name());
}
}
}
ToggleButtonListAdapter t1=new ToggleButtonListAdapter(MainActivity.this, switches);
list_modules.setAdapter(t1);
t1.notifyDataSetChanged();
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
} else {
Toast.makeText(getApplicationContext(), "No module defined for this room!!!!!!", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "status:-" + response.getStatus(), Toast.LENGTH_SHORT).show();
}
}
}
}
请帮助我!!