Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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
android-为每个cardview获取有限的json数组_Android_Arrays_Json_Android Volley_Cardview - Fatal编程技术网

android-为每个cardview获取有限的json数组

android-为每个cardview获取有限的json数组,android,arrays,json,android-volley,cardview,Android,Arrays,Json,Android Volley,Cardview,我正在使用cardview,每张卡都有一个弹出菜单,可以打开另一个活动。“数据”数组显示在卡上,我希望在其他活动开始时显示相应的数组“文档列表”。下面是代码,但所有项目都将显示出来。那么我该如何限制或限制呢?数据(id)=文档列表(属性id) CARDVIEW片段 StringRequest stringRequest = new StringRequest(Request.Method.POST,"URL", new Response.Listen

我正在使用cardview,每张卡都有一个弹出菜单,可以打开另一个活动。“数据”数组显示在卡上,我希望在其他活动开始时显示相应的数组“文档列表”。下面是代码,但所有项目都将显示出来。那么我该如何限制或限制呢?数据(id)=文档列表(属性id)

CARDVIEW片段

 StringRequest stringRequest = new StringRequest(Request.Method.POST,"URL",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        //converting the string to json array object
                        JSONObject object = new JSONObject(response);
                        if (object.getInt("status") == 200) {
                            JSONArray jsonArray = object.getJSONArray("data");
                           // String userData = jsonArray.getString(0);
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject pobj = jsonArray.getJSONObject(i);
                                pobj.getString("id");
                                JSONObject pobj1 = new JSONObject(pobj.getString("owner_details"));
                                mylistList.add(new Mylist(
                                      //other elements
                                        pobj.getString("sas_application_no"),
                                        pobj1.getString("name"),
                                        pobj1.getString("mobile")
                                        ));
                            }
                        }
Doc_片段是打开cardview的新活动,代码如下。因此,点击R.id.menu_文档:我需要传递从CARDVIEW片段获取的“id”?我该怎么做

public class DocFragment extends Fragment {
//a list to store all the products
List<DocList> docList;
DocAdapter docAdapter;
//the recyclerview
RecyclerView recyclerView;
private String sid = "";

public View onCreateView(@NonNull LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {

    View root = inflater.inflate(R.layout.fragment_doc, container, false);
    if (getArguments() != null) {
        sid = getArguments().getString("id");
        Toast.makeText(getActivity(), sid, Toast.LENGTH_LONG).show();
    }
    docList = new ArrayList<>();
    recyclerView = (RecyclerView) root.findViewById(R.id.recyclerView1);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

    //docList.add(new DocList("abc","123","asdf"));
    //creating recyclerview adapter
    docAdapter = new DocAdapter(getContext(), docList);
    recyclerView.setAdapter(docAdapter);
    loadMenuData();

    return root;
}


public void loadMenuData() {
    StringRequest stringRequest = new StringRequest(Request.Method.POST, "url",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        //converting the string to json array object
                        //String selectedId = getIntent().getStringExtra("selectedId");
                        JSONObject object = new JSONObject(response);
                        if (object.getInt("status") == 200) {
                            JSONArray jsonArray = object.getJSONArray("data");
                            for (int i = 0; i < jsonArray.length(); i++) {
                                JSONObject pobj = jsonArray.getJSONObject(i);
                                if (!sid.equals(pobj.optString("id", "")))
                                    continue;
                                JSONArray jsonArray1 = pobj.getJSONArray("document_list");
                                for (int j = 0; j < jsonArray1.length(); j++) {
                                    JSONObject dobj = jsonArray1.getJSONObject(j);
                                    docList.add(new DocList(
                                            dobj.getString("document_name"),
                                            dobj.getString("description"),
                                            dobj.getString("doc_no")
                                    ));
                                }
                            }
                        }

                        //creating adapter object and setting it to recyclerview
                        docAdapter = new DocAdapter(getContext(), docList);
                        recyclerView.setAdapter(docAdapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

    //adding our stringrequest to queue
    Volley.newRequestQueue(getContext()).add(stringRequest);
}

您可以这样做:

在CardViewFragment中,选择卡时设置参数,如下所示:

switch (item.getItemId()) {

            case R.id.menu_document:
                //handle menu2 click
                Bundle bundle = new Bundle();
                bundle.putString("selectedId",selectedId);//get this id from your object/model .e.g list.get(postion).getId() , do it as per your strcuture setup. 
                DocFragment newfragment1 = new DocFragment();
                newfragment1.setArguments(bundle);
                FragmentTransaction fragmentTransaction1 =((AppCompatActivity)mCtx).getSupportFragmentManager().beginTransaction();
                fragmentTransaction1.replace(R.id.container_view1, newfragment1);
                fragmentTransaction1.addToBackStack(null);
                fragmentTransaction1.commit();
                NavigationActivity.container_view1.setVisibility(View.VISIBLE);
                break;
        }
DocFragment
中创建一个全局变量,并将其与来自源代码的数据相匹配

private String selectedId = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            selectedId = getArguments().getString("selectedId");
        }
    }
然后在获取
DocFragment

        try {
            //converting the string to json array object
            JSONObject object = new JSONObject(response);
            if (object.getInt("status") == 200) {
                JSONArray jsonArray = object.getJSONArray("data");
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject pobj = jsonArray.getJSONObject(i);
                    // compare id passed from main activity, which was selected by user
                    if (!selectedId.equals(pobj.optString("id", "")))
                        continue;
                    JSONArray jsonArray1 = pobj.getJSONArray("document_list");
                    for (int j = 0; j < jsonArray1.length(); j++) {
                        JSONObject dobj = jsonArray1.getJSONObject(j);
                        docList.add(new DocList(
                                dobj.getString("document_name"),
                                dobj.getString("description"),
                                dobj.getString("doc_no")
                        ));
                    }
                }
            }
        } catch (Exception e) {

        }
试试看{
//将字符串转换为json数组对象
JSONObject对象=新的JSONObject(响应);
if(object.getInt(“status”)==200){
JSONArray JSONArray=object.getJSONArray(“数据”);
for(int i=0;i
您打算通过什么来调用该活动?你在其他活动中得到了什么?你能给我一些代码和例子吗?@Mayur Gajra-我没有通过intent传递任何东西。在这两个活动中,我都传递了相同的URL。(cardview工作正常)好的,但我有一个cardview片段和cardview适配器(在这个适配器中,我有一个弹出菜单),所以通过弹出菜单我调用了新片段(所以id应该在这里传递,但意图不起作用)@AparnaMutnalkar在如何调用片段的问题上,你能更新你的代码吗?你在其他片段中收到了什么?@Mayur Gajra我已经更新了Sir@AparnaMutnalkar请参阅更新的答案,并让我知道这是否有帮助。我更新了谢谢,但如果(getArguments()!=null){selectedId=getArguments().getString(“selectedId”);}为空。我试着用烤面包来展示
private String selectedId = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            selectedId = getArguments().getString("selectedId");
        }
    }
        try {
            //converting the string to json array object
            JSONObject object = new JSONObject(response);
            if (object.getInt("status") == 200) {
                JSONArray jsonArray = object.getJSONArray("data");
                for (int i = 0; i < jsonArray.length(); i++) {
                    JSONObject pobj = jsonArray.getJSONObject(i);
                    // compare id passed from main activity, which was selected by user
                    if (!selectedId.equals(pobj.optString("id", "")))
                        continue;
                    JSONArray jsonArray1 = pobj.getJSONArray("document_list");
                    for (int j = 0; j < jsonArray1.length(); j++) {
                        JSONObject dobj = jsonArray1.getJSONObject(j);
                        docList.add(new DocList(
                                dobj.getString("document_name"),
                                dobj.getString("description"),
                                dobj.getString("doc_no")
                        ));
                    }
                }
            }
        } catch (Exception e) {

        }