Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android中将Hashmap数组从一个活动发送到另一个活动_Java_Android - Fatal编程技术网

Java 如何在android中将Hashmap数组从一个活动发送到另一个活动

Java 如何在android中将Hashmap数组从一个活动发送到另一个活动,java,android,Java,Android,我在主活动中有一个列表视图,我使用数组适配器在其中填充了一些值 String[] arr = new String[]{"Android ListView Item 1", "Android ListView Item 2", "Simple List View In Android", "List View onClick Event","Android List View OnItemClickListener", "Open New Activity Whe

我在主活动中有一个列表视图,我使用数组适配器在其中填充了一些值

String[] arr = new String[]{"Android ListView Item 1", "Android ListView Item 2",
        "Simple List View In Android", "List View onClick Event","Android List View OnItemClickListener",
        "Open New Activity When ListView item Clicked", "List View onClick Source Code", "List View Array Adapter Item Click",
};
现在我想将onclickListener设置为列表中的每一项。我正在请求一个api,该api为我提供jsonresponse,我希望在单击列表项时迭代jsonresponse并将所需数据发送给另一个活动

我尝试了以下方法:

ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(this, 
R.layout.activity_main2, R.id.textview, arr);

    listview.setAdapter(arrayadapter);

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            String textToPass = "hello";
            if (position == 0) {
                Bundle passData = new Bundle();
                passData.putString("data",textToPass);
                Intent myIntent = new Intent(view.getContext(), Main2Activity.class);

                myIntent.putExtras(passData);
                startActivity(myIntent);
              }
         }
    });
}

private String jsonParse(){

    String url = "//testing/api.php"; //get json response locally
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            JSONArray jsonArray = null;
            try {
                jsonArray = response.getJSONArray("Item");

                for(int i=0; i<=jsonArray.length();i++){

                    HashMap<String,String> dict = new HashMap<String,String>();

                    JSONObject tv = jsonArray.getJSONObject(i);
                    String sid;

                    dict.put("cid", tv.getString("sid") );

                   // String cid = tv.getString("sid");
                    String categoryName =tv.getString("category_name");
                    String baseUrl = "//testing/";
                    String imageUrl = baseUrl + tv.getString("category_image");


                    //textView.append(cid + "," + categoryName + "," + imageUrl + "\n\n");

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
            assert jsonArray != null;
            Log.d("Main",jsonArray.toString());

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.d(error.getMessage(), "utf-8");
        }
    });



    requestQueue.add(jsonObjectRequest);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(此,
R.layout.activity_main2,R.id.textview,arr);
setAdapter(arrayadapter);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
字符串textToPass=“hello”;
如果(位置==0){
Bundle passData=新Bundle();
passData.putString(“数据”,textToPass);
Intent myIntent=newintent(view.getContext(),Main2Activity.class);
myIntent.putExtras(passData);
星触觉(myIntent);
}
}
});
}
私有字符串jsonParse(){
String url=“//testing/api.php”;//本地获取json响应
RequestQueue RequestQueue=Volley.newRequestQueue(this);
JsonObjectRequest JsonObjectRequest=新的JsonObjectRequest(url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
JSONArray JSONArray=null;
试一试{
jsonArray=response.getJSONArray(“项”);

对于(int i=0;i如果我理解正确,那么我认为您希望将HashMap
dic
发送到另一个活动。HashMap可序列化这意味着您可以轻松地将其传递给intent,而且键和值都是字符串,也可序列化

intent.putExtra("dic.key", dic);
在下一个活动中,使用typecasting检索它..很简单

HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("hashMap");
HashMap HashMap=(HashMap)intent.getSerializableExtra(“HashMap”);

您可以使用事件总线进行此操作。是否要将HashMap dict发送到另一个活动?@sontruongit,是的,是否要创建HashMap列表,然后对其进行迭代,当用户单击listview的每个元素时,列表中属于HashMap的每个元素都应显示出来。嗨,伙计,您必须将其更改为HashMap,然后感谢serializable…不是这样dic:D