在单击不同按钮时,在同一活动上解析不同的JSON数据

时间:2017-12-21 06:03:39

标签: android json

我想在点击不同的按钮时使用相同的活动来解析不同的JSON数据。我只想得出结论,我在一个活动上有几个ImageView,当我点击任何ImageView时,它必须打开相同的活动,但根据ImageViews的点击数据应该是不同的。在这里,我有我的java类活动,其中存在不同的ImageView。

    imageView1 = findViewById(R.id.Hospital1);
    imageView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Activity1.this, DetailActivity.class);
            startActivity(intent);
        }
    });

    imageView2 = findViewById(R.id.Hospital2);
    imageView2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Activity1.this, DetailActivity.class);
            startActivity(intent);
        }
    });

    imageView3 = findViewById(R.id.Hospital3);
    imageView3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Activity1.this, DetailActivity.class);
            startActivity(intent);
        }
    });

    imageView4 = findViewById(R.id.Hospital4);
    imageView4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent intent = new Intent(Activity1.this, DetailActivity.class);
            startActivity(intent);
        }
    });

}

这是我的DetailActivity,我想在点击任何这些ImageView时调用它。

    aQuery.progress(R.id.progressBar).ajax(fetchurl, JSONArray.class, new AjaxCallback<JSONArray>() {
        @Override
        public void callback(String url, JSONArray array, AjaxStatus status) {
            super.callback(url, array, status);
            Log.i("response", url + "response:" + array);

            ArrayList<UserInfo> list = new ArrayList<>();

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

                try {
                    JSONObject object = array.getJSONObject(i);
                    UserInfo info = new UserInfo();
                    info.id = object.getString("Id");
                    info.servicename = object.getString("name");
                    info.amount = object.getString("amount");
                    list.add(info);

                    textView1.append(info.id + "." + "\n\n");
                    textView2.append(info.servicename + " " + "\n\n");
                    textView3.append(info.amount + " " + "\n\n");

                    progressbar.setVisibility(View.GONE);

                } catch (JSONException je) {
                    Toast.makeText(aQuery.getContext(), "Error Parsing Data!", Toast.LENGTH_LONG).show();
                } catch (Exception e) {
                    Toast.makeText(aQuery.getContext(), "Something went wrong...", Toast.LENGTH_LONG).show();
                }

            }
            if (status.getCode() == 500) {
                Toast.makeText(aQuery.getContext(), "Server is busy, Try Again!", Toast.LENGTH_LONG).show();
            } else if (status.getCode() == 404) {
                Toast.makeText(aQuery.getContext(), "Resource Not Found!", Toast.LENGTH_LONG).show();
            } else if (status.getCode() == 200) {

            } else {
                Toast.makeText(aQuery.getContext(), "Unexpected Error Occured !", Toast.LENGTH_LONG).show();
            }
        }
    });

我的问题是,当我点击任何ImageView时,它会打开DetailActivity,但所有ImageView的所有数据都是相同的。有什么我也可以用数据库吗?这是我的数据库 Click here...

的图像

我是android编程的新手,如果我得到了我必须编辑代码的代码块,那将更加感激。我只是想显示&#34; name2 &#34;的数据。和&#34; amount2 &#34; imageView2的数据库列。

目前我正在使用 String fetchurl =&#34; http://192.168.0.111/MyApplication/select.php&#34 ;; 网址。您可以进一步查看我的Json数据。

3 个答案:

答案 0 :(得分:0)

您可以传递fetchUrl将要使用的DetailActivity

imageView1 = findViewById(R.id.Hospital1);
imageView1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(Activity1.this, DetailActivity.class);
        intent.putExtra("fetch_url", "http://baseurl.com/imageview1");
        startActivity(intent);
    }
});
//....repeat this code with the other imageView, imageView2, imageView3....

您可以使用以下代码DetailActivity获取

String fetchUrl = getIntent().getStringExtra("fetch_url", ""); //2nd param is default value

aQuery.progress(R.id.progressBar).ajax(fetchUrl, JSONArray.class, new AjaxCallback<JSONArray>() {
.....

现在,您可以根据url上的特定点击使用特定的imageView

答案 1 :(得分:0)

点击imageview

更改fetchurl

答案 2 :(得分:0)

所有数据都相同,因为没有图像特定值传递给您的详细信息活动。你如何识别点击了哪个图像?

为您的活动实现onClickListener在您的情况下可能是最佳的...

public class YourActivity implements View.OnClickListener {

inside OnCreate(){....
map your imageviews to clicklisteners,
 imageView4.setOnClickListener(this);

@Override
public void onClick(View view) {

    switch (view.getId()){

        case R.id.hosptial1:

            Intent intent = new Intent(..., DetailActivity.class);
            intent.putExtra("id", ..button);
            intent.putExtra("key", ..value);
            startActivity(intent);

            break;


        .
        .
        .
    }
}

Intent是在活动之间传递数据的方法之一。假设fetchurl在请求中需要特定于图像的值,一旦在DetailActivity中获得相同的值,就可以在请求中使用它。