【问题标题】:HashMap<String, String> text to TextView in Second Activity第二个活动中的 HashMap<String, String> 文本到 TextView
【发布时间】:2018-05-27 21:28:45
【问题描述】:

我有一个使用HashMap&lt;String, String&gt;ListView,我希望将其传递给第二个活动。

在第二个活动中,我有一些TextView,我需要一个TextView 来在HashMap 上设置所选项目的文本。

问题是我在TextView 中得到的不是键或值,而是(“Example1”或“Example2”):

{First=Example1, Second=Example2 }

主要活动:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final ListView resultsListView = (ListView) findViewById(R.id.listView);
    EditText buscar = (EditText) findViewById(R.id.busqueda);
    final TreeMap<String, String> nameAddresses = new TreeMap<>();

    nameAddresses.put   ("Example1", "Example2");



    final List<HashMap<String, String>> listItems = new ArrayList<>();
    final SimpleAdapter adapter = new SimpleAdapter(this, listItems, R.layout.list_item,
            new String[]{"First", "Second"},
            new int[]{R.id.text1, R.id.text2});

    Iterator it = nameAddresses.entrySet().iterator();
    while (it.hasNext())
    {
        HashMap<String, String> resultsMap = new HashMap<>();
        Map.Entry pair = (Map.Entry)it.next();
        resultsMap.put("First", pair.getKey().toString());
        resultsMap.put("Second", pair.getValue().toString());
        listItems.add(resultsMap);
    }


    resultsListView.setAdapter(adapter);
    resultsListView.setFastScrollEnabled(true);


    resultsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

           Intent intent = new Intent (MainActivity.this, SecondActivity.class);
           intent.putExtra("Titulo", resultsListView.getItemAtPosition(position).toString());

            startActivity(intent);
        }
    });

第二个活动:

TextView mTextView;
TextView mTextView2;
TextView mTextView3;
TextView mTextView4;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);

    mTextView = (TextView) findViewById(R.id.textView2);
    mTextView2 = (TextView) findViewById(R.id.textView3);
    mTextView3 = (TextView) findViewById(R.id.tTitulo);
    mTextView4 = (TextView) findViewById(R.id.tSubtitulo);
    button = (ImageButton) findViewById(R.id.imageButton);


    Bundle bundle = getIntent().getExtras();
    if (bundle != null) {
        mTextView3.setText(bundle.getString("Titulo"));

【问题讨论】:

  • 我明白了... {First=Example1, Second=Example2 } .toString() ... 因为你用toString() 方法得到了什么

标签: java android android-intent hashmap textview


【解决方案1】:

在将 HashMap 传递给第二个活动并在那里重建数据之前,您应该使用 JSON 序列化您的 HashMap。 Android 提供了对此的支持,因此您可以使用org.json.JSONObject。这意味着您可以:

Intent intent = new Intent (MainActivity.this, SecondActivity.class);
intent.putExtra("Titulo", new JSONObject(resultsListView.getItemAtPosition(position)).toString());

startActivity(intent);

在你的SecondActivity 中做:

Bundle bundle = getIntent().getExtras();
if (bundle != null) {
    JSONObject myHashMap = JSONObject(bundle.getString("Titulo"));
    mTextView3.setText(myHashMap.optString('First', 'error'));
}

myHashMap 不是 HashMap,但您可以以类似的方式使用它。你阅读了更多关于它的信息here

【讨论】:

  • JSONObject myHashMap = bundle.getString("Titulo");
猜你喜欢
  • 1970-01-01
  • 2021-11-13
  • 1970-01-01
  • 2013-07-29
  • 2013-05-11
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多