[英]how to display different json data between two activities?
我一直在试图在Android应用程序中解析json数据。 我想说进展顺利,但确实有问题。 我一直在遵循本教程 ,即使自己托管文件也能很好地工作。 但是,我想知道如何在两个活动之间显示不同的数据。 我将其范围缩小为这两段代码...
这一部分来自MainActivity.java
公共类MainActivity扩展了ListActivity {
private ProgressDialog pDialog;
// URL to get contacts JSON
private static String url = "http://jsontesthosting.x10host.com/jsontest.json";
// JSON Node names
private static final String TAG_CONTACTS = "contacts";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_ADDRESS = "address";
private static final String TAG_GENDER = "gender";
private static final String TAG_PHONE = "phone";
private static final String TAG_PHONE_MOBILE = "mobile";
private static final String TAG_PHONE_HOME = "home";
private static final String TAG_PHONE_OFFICE = "office";
// contacts JSONArray
JSONArray contacts = null;
// Hashmap for ListView
ArrayList<HashMap<String, String>> contactList;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contactList = new ArrayList<HashMap<String, String>>();
ListView lv = getListView();
// Listview on item click listener
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.name))
.getText().toString();
String cost = ((TextView) view.findViewById(R.id.email))
.getText().toString();
String description = ((TextView) view.findViewById(R.id.mobile))
.getText().toString();
String sex = ((TextView) view.findViewById(R.id.gender))
.getText().toString();
// Starting single contact activity
Intent in = new Intent(getApplicationContext(),
SingleContactActivity.class);
in.putExtra(TAG_NAME, name);
in.putExtra(TAG_EMAIL, cost);
in.putExtra(TAG_PHONE_MOBILE, description);
in.putExtra(TAG_GENDER, sex);
startActivity(in);
}
});
如果来自SingleContactActivity.java
公共类SingleContactActivity扩展了Activity {
// JSON node keys
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
private static final String TAG_PHONE_MOBILE = "mobile";
private static final String TAG_GENDER = "gender";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_single_contact);
// getting intent data
Intent in = getIntent();
// Get JSON values from previous intent
String name = in.getStringExtra(TAG_NAME);
String email = in.getStringExtra(TAG_EMAIL);
String mobile = in.getStringExtra(TAG_PHONE_MOBILE);
String gender = in.getStringExtra(TAG_GENDER);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblEmail = (TextView) findViewById(R.id.email_label);
TextView lblMobile = (TextView) findViewById(R.id.mobile_label);
TextView lblGender = (TextView) findViewById(R.id.gender_label);
以下是本教程中我对布局文件所做的补充...
list_item.xml
<TextView
android:id="@+id/gender"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="2dip"
android:textColor="#acacac" />
activity_single_contact.xml
<TextView android:id="@+id/gender_label"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold"/>
与本教程进行比较,您可以看到我输入了GENDER数据,希望它仅显示在SingleContactActivity中,但同时显示在这两个中。 我知道它与putExtra和getStringExtra有关。 这可能是一个愚蠢的问题,但是您知道如何仅在按下ListView中的项目时才能使性别信息显示在SingleContactActivity中吗?
如果您需要更多代码,请告诉我,非常感谢您能为我提供的任何帮助!
编辑-我已根据需要更新了代码。 我也想澄清一下我要做什么。
这是我创建自己正在设计的应用程序时的所有测试...基本上是指南。 字符列表,单击后将显示该字符名称和有关它们的其他信息。 因此,在此测试中,将在两个活动之间解析json数据...但是在第二个活动中,我希望有更多信息...我希望这更清楚。
这里的问题是您在不需要的第一个列表中显示信息。
SingleContactActivity旨在显示单个联系人的所有联系人信息吗?
因此,为什么要在mainactivity的列表中放入这些项目。在main activity列表中应该只有一个名称列表,您单击一个名称并发送相关数据并显示它。
从主列表中删除仅在单击名称后才会显示的这些项目。 希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.