Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 根据RecyclerView中的Json文件Id传递Json数据_Java_Android - Fatal编程技术网

Java 根据RecyclerView中的Json文件Id传递Json数据

Java 根据RecyclerView中的Json文件Id传递Json数据,java,android,Java,Android,我有一个问题,我已经尝试了很多次,但我没有成功,请你帮助我!我有一个从json文件中获取数据的RecyclerView。我有两个json文件,我的json文件如下所示: { "ussd_code":[ {"cmd_id": 1,"cmd_name": "Solde de crédit","cmd_instruction": "*100#","cmd_commentaire": null,"opetor_id": 2,"mnu_id": 12,"test":2}, {"cmd_id": 2,"cm

我有一个问题,我已经尝试了很多次,但我没有成功,请你帮助我!我有一个从json文件中获取数据的RecyclerView。我有两个json文件,我的json文件如下所示:

{ "ussd_code":[
{"cmd_id": 1,"cmd_name": "Solde de crédit","cmd_instruction": "*100#","cmd_commentaire": null,"opetor_id": 2,"mnu_id": 12,"test":2},
{"cmd_id": 2,"cmd_name": "Solde de crédit","cmd_instruction": "*565#","cmd_commentaire": null,"opetor_id": 1,"mnu_id": 12,"test":1},
{"cmd_id": 3,"cmd_name": "Solde de crédit","cmd_instruction": "*124#","cmd_commentaire": null,"opetor_id": 3,"mnu_id": 12,"test":3},
{"cmd_id": 4,"cmd_name": "Airtel Money","cmd_instruction": "*501#","cmd_commentaire": null,"opetor_id": 1,"mnu_id": 12,"test":1},
{"cmd_id": 5,"cmd_name": "Mon numéro","cmd_instruction": "*502#","cmd_commentaire": null,"opetor_id": 1,"mnu_id": 12,"test":1},
{"cmd_id": 6,"cmd_name": "8 minutes (Vers airtel)","cmd_instruction": "*171*50#", "cmd_commentaire": "50 Unités pour 1 jour","opetor_id": 1,"mnu_id": 11,"test":1},
{"cmd_id": 7,"cmd_name": "10 min (Tous réseau)","cmd_instruction": "*171*0100#","cmd_commentaire": "100 Unités pour 1 jour","opetor_id": 1,"mnu_id": 11,"test":1}]}
还有一个:

{"operator":[
{"opetor_id": 1,"opetor_name": "Airtel","ctry_id": "CD"},
{"opetor_id": 2,"opetor_name": "Vodacom","ctry_id": "CD"},
{"opetor_id": 3,"opetor_name": "Orange","ctry_id": "CD"},
{"opetor_id": 4,"opetor_name": "Tigo","ctry_id": "CD"}]}
一旦我验证两个json文件中的
运算符\u id
是否相同,我将在RecyclerView中传递数据这是我的代码:

String cmd_id=new String();
String cmd_name=新字符串();
String cmd_指令=新字符串();
String cmd_commentaire=新字符串();
...
对于(intz=0;z
这是我的适配器:

公共类CustomAdapter扩展了RecyclerView.Adapter{ String cmd_id=新字符串(); String cmd_name=新字符串(); String cmd_指令=新字符串(); String cmd_commentaire=新字符串(); ArrayList cmd_运算符=新的ArrayList(); 语境; 公共CustomAdapter(上下文上下文、字符串cmd\u id、字符串cmd\u名称、字符串cmd\u指令、字符串cmd\u注释){ this.context=上下文; this.cmd_id=cmd_id; this.cmd\u name=cmd\u name; this.cmd_指令=cmd_指令; this.cmd_commentaire=cmd_commentaire; } @凌驾 公共MyViewHolder onCreateViewHolder(视图组父级,int-viewType){ //对项目布局进行充气 视图v=LayoutInflater.from(parent.getContext()).flate(R.layout.rowlayout,parent,false); MyViewHolder vh=新的MyViewHolder(v);//将视图传递给视图持有者 返回vh; } @凌驾 公共无效onBindViewHolder(MyViewHolder,最终整数位置){ //在项目中设置数据 //holder.name.setText(cmd_id.get(position)); holder.email.setText(cmd_name); //holder.mobileNo.setText(cmd_指令.get(位置)); //在项目视图上实现setOnClickListener事件。 holder.itemView.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图){ //在单击项目时显示带有人名的祝酒词 //Toast.makeText(context,cmd_name.get(position),Toast.LENGTH_SHORT.show(); if(ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CALL\u PHONE)!=PackageManager.permission\u已授予){ Toast.makeText(MainActivity.this,“请授予调用权限”,Toast.LENGTH_SHORT.show(); 请求权限(); }否则{ //Toast.makeText(橙色,这是“回收者视图项:”+i,Toast.LENGTH_LONG.show(); //最终意图; Intent myIntent=新的Intent(Intent.ACTION_拨号,Uri.parse(“tel:”+cmd_指令.replace(“#”)+Uri.encode(“#”); 星触觉(myIntent); } } }); } @凌驾 public int getItemCount(){ 返回cmd_id.length(); } 公共类MyViewHolder扩展了RecyclerView.ViewHolder{ TextView名称、电子邮件、mobileNo;//初始化项目视图的 公共MyViewHolder(查看项目视图){ 超级(项目视图); //获取项目视图的引用 name=(TextView)itemView.findViewById(R.id.name); email=(TextView)itemView.findViewById(R.id.email); mobileNo=(TextView)itemView.findViewById(R.id.mobileNo); } } }

当我在
ussd\u code
json文件中
opetor\u id
等于1的地方运行我的应用程序时,它只给我最后一个值,或者我有五个
opetor\u id
,但仍然有最后一个值。不知道为什么没有出现orthers。

您每次都在遍历循环并创建自定义适配器的新实例。因此,通过en-dof循环,最后一个实例将只保留

所以,您需要做的是创建一个包含变量cmd_id、cmd_name、cmd_指令和cmd_commentaire的模型。然后创建一个model类型的ArrayAdapter

遍历循环时,只需将新模型添加到该ArrayAdapter,不要每次都创建适配器的新实例

更新: 创建JSON的POJO

List<MyPojo> lstPojo = new ArrayList<~>;
for (int z = 0; z < jArrayMenu.length(); z++)
{
    JSONObject MnuDetail = jArrayMenu.getJSONObject(z);
    int operatorIdMenu = MnuDetail.getInt("opetor_id");
    //cmd_operator_test.add(MnuDetail.getInt("opetor_id"));
    if (OperaID == operatorIdMenu)
    {
        lstPojo.add(new MyPojo(MnuDetail.getString("cmd_id"),
                               MnuDetail.getString("cmd_name"),
                               MnuDetail.getString("cmd_instruction"),
                               MnuDetail.getString("cmd_commentaire")));
    }

}
CustomAdapter customAdapter = new CustomAdapter(MainActivity.this,
            android.R.layout.simple_spinner_item,
            lstPojo);
rv.setAdapter(customAdapter);
List lstPojo=newarraylist;
对于(intz=0;z

希望这有帮助。

您每次都在遍历循环并创建自定义适配器的新实例。因此,通过en-dof循环,最后一个实例将只保留

所以,你需要做的是创建一个模型