2016-01-19 21 views
0

这是我在stackoverflow上的第一个问题,并且我对android(我是iOS开发人员)有点新了。 我正在使用volley来填充Json数据的列表视图,现在我想处理listview项目上的点击并将所有与我点击的项目相关的数据传递给新的活动。我怎样才能做到这一点?这是我称之为“MenuActivity”的“MainActivity”。预先感谢您的帮助^^。Android:如何将Json数据传递给Json填充的其他活动列表视图

public class MenuActivity extends AppCompatActivity { 
JSONArray contact = null; 
private String urlJsonObj = "http://advadwords.it/Hotel_managing_app/index.php/Controller_managing_app/json_menu"; 
private static String TAG = MainActivity.class.getSimpleName(); 
private ProgressDialog pDialog; 
//private String jsonResponse; 
ArrayList<HashMap<String, String>> contactList; 
ListView lv; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 
    contactList = new ArrayList<HashMap<String, String>>(); 
    lv = (ListView) findViewById(R.id.list); 
    pDialog = new ProgressDialog(this); 
    pDialog.setMessage("Sto caricando..."); 
    pDialog.setCancelable(false); 
    makeJsonObjectRequest(); 


} 
private void makeJsonObjectRequest() { 
    pDialog.show(); 
    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.GET, 
      urlJsonObj, null, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(JSONObject response) { 
      Log.d(TAG, response.toString()); 
      try { 
       contact = response.getJSONArray("menu"); 
       for (int i = 0; i < contact.length(); i++) { 
        JSONObject details = (JSONObject) contact.get(i); 
        String giorno = details.getString("Giorno"); 
        String pranzoPrimo = details.getString("Pranzo_primo"); 

        HashMap<String, String> contct = new HashMap<String, String>(); 
        contct.put("Giorno", giorno); 
        contct.put("Pranzo_primo", pranzoPrimo); 

        contactList.add(contct); 


        //adapter to set response in textview 
        ListAdapter adapter = new SimpleAdapter(
          MenuActivity.this, contactList, 
          R.layout.list_item, new String[]{"Giorno", "Pranzo_primo"}, new int[]{R.id.name, R.id.primoPranzo}); 
        lv.setAdapter(adapter); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
       Toast.makeText(getApplicationContext(), 
         "Error: " + e.getMessage(), 
         Toast.LENGTH_LONG).show(); 
      } 
      hidepDialog(); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      Toast.makeText(getApplicationContext(), 
        error.getMessage(), Toast.LENGTH_SHORT).show(); 
      // hide the progress dialog 
      hidepDialog(); 
     } 
    }); 
    AppController.getInstance().addToRequestQueue(jsonObjReq); 
} 
private void showpDialog() { 
    if (!pDialog.isShowing()) 
     pDialog.show(); 
} 
private void hidepDialog() { 
    if (pDialog.isShowing()) 
     pDialog.dismiss(); 
} 

}

回答

0

我想处理一个ListView项的点击所有的数据 与我点击的项目,传递给新的活动。

你必须在你的listView中实现onItemClickListener。点击列表后,将ID传递给另一个活动,最终检索活动中属于ID的所有数据。

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> listView, View view, 
            int position, long id) { 
       HashMap<String, String> clickedItem = contactList.get(position); 
       ID=clickedItem.get(Configs.TAG_ID); // your key ID 
       Toast.makeText(getApplicationContext(),"Edit"+ID,Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(getApplicationContext(), ActivityB.class); 
       intent.putExtra("ID", ID); // pass the ID to another activity 
       startActivity(intent); 
      } 
     }); 
+0

我试图将这段代码复制到onCreate方法,但它给了我几个错误。第一个在“lvt.get(position);”中,第二个在Configs.TAG_ID是 –

+0

是的,因为我只是给你一些提示。你介意告诉我这个错误吗? –

+0

它说:“无法解决方法get(int)”和“无法解析符号配置” –

相关问题