根据JSON数据转移到多个活动

问题描述 投票:-1回答:2

我有一些JSON数据 -

{
"ActivityOrder":[
{
"Position":3,
"ActivityName":"Activity1"
},
{
"Position":5,
"ActivityName":"Activity2"
},
{
"Position":2,
"ActivityName":"Activity3"
},
{
"Position":1,
"ActivityName":"Activity4"
},
{
"Position":4,
"ActivityName":"Activity5"
}
]
}

根据上面的JSON数据,从Single Activity或类调用Intent。我的意思是先调用Position1活动(Activity4),然后调用position2(Activity3),依此类推。

注意: - 在JSON数据中,可以从后端更改活动位置。

android
2个回答
0
投票

获得活动名称后,立即创建类:

Class activity= Class.forName("yourActivityName");

然后创建意图:

Intent intent = new Intent(this, activity);

0
投票

创建pojo模型类:

public class MyPojo {

    String  ActivityName;
    int  Position;

    public MyPojo(String activityName, int position) {
        ActivityName = activityName;
        Position = position;
    }

    public int getPosition() {
        return Position;
    }

    public void setPosition(int position) {
        Position = position;
    }

    public String getActivityName() {
        return ActivityName;
    }

    public void setActivityName(String activityName) {
        ActivityName = activityName;
    }
}

现在解析json到Model:

List<MyPojo> MyPojoList=new ArrayList<>();

    try {

            JSONObject jObj = new JSONObject("your json response");
            JSONArray jArr = jObj.getJSONArray("ActivityOrder");
            for (int i=0; i < jArr.length(); i++) {
                 JSONObject obj = jArr.getJSONObject(i);
                 String Position = jObj.getString("Position");
                 String ActivityName = jObj.getString("ActivityName");
                 MyPojoList.add(new MyPojo(ActivityName,Position));
            }

        }
        catch(JSONException ex) {
            ex.printStackTrace();
        }

现在排序数组:

Collections.sort(MyPojoList, new Comparator<MyPojo>(){
            public int compare(MyPojo obj1, MyPojo obj2) {
                return Integer.valueOf(obj1.getPosition()).compareTo(Integer.valueOf(obj2.getPosition()));
            }
        });

最后,逐个开始活动:

Intent intent=new Intent();
        intent.setComponent(new ComponentName(getApplicationContext(), MyPojoList.get(position).getActivityName()));
        try {
            startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
© www.soinside.com 2019 - 2024. All rights reserved.