繁体   English   中英

如何在两个活动之间显示不同的json数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM