我有一个从JSON获取数据的列表视图。到目前为止,我能够以列表视图显示数据。 (这里的数据是代理商列表)。 现在我想开当特定剂被点击,这将显示代理细节,如姓名,电话,电子邮件等列表视图的新活动....如何在列表视图中显示与点击项目相关的数据? (onclicklistener)
,因为我是新来的Android我将不胜感激任何想法。
我的代码:
public class MainActivity extends AppCompatActivity
{
private String jsonResult;
public String url = "http://111.111.111.1/androidapp/getjson.php";
ListView listView;
List<Map<String, String>> agents = new ArrayList<Map<String, String>>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
accessWebService();
}
private class JsonReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params)
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(params[0]);
try {
HttpResponse response = httpclient.execute(httppost);
jsonResult = inputStreamToString(
response.getEntity().getContent()).toString();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = rd.readLine()) != null) {
answer.append(rLine);
}
} catch (IOException e) {
Toast.makeText(getApplicationContext(), "error ..." + e.toString(), Toast.LENGTH_LONG).show();
}
return answer;
}
@Override
protected void onPostExecute(String result)
{
ListDrwaer();
}
}
public void accessWebService() {
JsonReadTask task = new JsonReadTask();
task.execute(new String[]{url});
}
public void ListDrwaer() {
try {
JSONObject jsonResponse = new JSONObject(jsonResult.substring(jsonResult.indexOf("{"), jsonResult.lastIndexOf("}") + 1));
JSONArray jsonMainNode = jsonResponse.optJSONArray("agents");
final ArrayList<HashMap<String, String>> MyArrList = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject c = jsonMainNode.getJSONObject(i);
map = new HashMap<String, String>();
map.put("AgtFirstName", c.getString("AgtFirstName"));
map.put("AgtLastName", c.getString("AgtLastName"));
MyArrList.add(map);
SimpleAdapter simpleAdapter;
simpleAdapter = new SimpleAdapter(MainActivity.this, MyArrList, R.layout.activity_column, new String[]{"AgtFirstName", "AgtLastName"}, new int[]{R.id.AgtFirstName , R.id.AgtLastName});
listView.setAdapter(simpleAdapter);
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "error parsing..." + e.toString(), Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private AdapterView.OnItemClickListener onListClick=new AdapterView.OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent,View view, int position, long id)
{
Intent i=new Intent(MainActivity.this,AgentDetails.class);
i.putExtra("position", map.get(position));
startActivity(i);
}
};
}
只要你可以获取数据onitem点击并通过intent发送 –
@ Poovizhirajan.N我使用onItemClick但数据不显示在其他活动 –