我想在点击不同的按钮时使用相同的活动来解析不同的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数据。
答案 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中获得相同的值,就可以在请求中使用它。