HashMap<String, String> 文本到 TextView 秒 Activity
HashMap<String, String> text to TextView in Second Activity
我有一个 ListView
使用 HashMap<String, String>
我想传递给第二个 activity。
在第二个活动中,我有一些 TextView
,我需要一个 TextView
来设置 HashMap
上所选项目的文本。
问题是我在 TextView
:
{First=Example1, Second=Example2 }
主要Activity:
@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);
}
});
第二个Activity:
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"));
在将 HashMap 传递给第二个 activity 并在那里重建数据之前,您应该使用 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。
我有一个 ListView
使用 HashMap<String, String>
我想传递给第二个 activity。
在第二个活动中,我有一些 TextView
,我需要一个 TextView
来设置 HashMap
上所选项目的文本。
问题是我在 TextView
:
{First=Example1, Second=Example2 }
主要Activity:
@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);
}
});
第二个Activity:
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"));
在将 HashMap 传递给第二个 activity 并在那里重建数据之前,您应该使用 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。