Android 如何将捆绑数据逐个显示到textview?
如何将捆绑数据逐个显示到文本视图 我有一个有10个文本视图的活动。我想在文本视图中显示所有捆绑数据 这是bundle格式Android 如何将捆绑数据逐个显示到textview?,android,bundle,Android,Bundle,如何将捆绑数据逐个显示到文本视图 我有一个有10个文本视图的活动。我想在文本视图中显示所有捆绑数据 这是bundle格式 Bundle[{INDUSTRY_TYPE_ID=Retail, CHANNEL_ID=WAP, CHECKSUMHASH=IIUBjkuTPs9xx/TnzKbR0BkWKvsumSCMyrYBIZzAppNTdJGC+U+XyjESvFwCax/ME2dexR05YKDJuZSsgpSxxDtAUb6bGeOs9u/1t9FxxkE=, MOBILE_NO=7428453
Bundle[{INDUSTRY_TYPE_ID=Retail, CHANNEL_ID=WAP, CHECKSUMHASH=IIUBjkuTPs9xx/TnzKbR0BkWKvsumSCMyrYBIZzAppNTdJGC+U+XyjESvFwCax/ME2dexR05YKDJuZSsgpSxxDtAUb6bGeOs9u/1t9FxxkE=, MOBILE_NO=7428453915, REQUEST_TYPE=DEFAULT, TXN_AMOUNT=4.0, MID=klbGlV59135347348753, EMAIL=singhamit1632@gmail.com, THEME=merchant, payt_STATUS=1, CUST_ID=48, WEBSITE=paytm, ORDER_ID=FCF449}]
第一个拥有捆绑数据的活动
Intent intent = new Intent(PaymentPageActvity.this,CancelPaymentActivity.class);
Bundle b=new Bundle();
b.putString("ss", inResponse.toString());
intent.putExtras(b);
startActivity(intent);
获取数据并在textview上显示的第二个活动
Intent intent = getIntent();
Bundle b = CancelPaymentActivity.this.getIntent().getExtras();
String v = b.getString("ss").toString();
INDUSTRY_TYPE_ID.setText(v);
行业\类型\ ID==文本视图名称让我们假设您的活动中有一个值包和一个布局,例如ListLayout,您希望为包中的部分或所有条目添加一个文本视图
如果您的布局是静态的,您的TextView已经定义,并且您知道哪个捆绑包值放在哪个TextView中,您可以执行以下操作:
TextView industryType = (TextView)findViewById(R.id.textIndustryType);
industryType.setText(bundle.getString("INDUSTRY_TYPE_ID"));
// ...
或者定义一个将捆绑键与文本视图ID关联的映射,并使用它。例如:
private static Map<String, String> keyToTextViewId = new HashMap<String, String>();
static {
keyToTextViewId.put("INDUSTRY_TYPE_ID", R.id.textIndustryType);
keyToTextViewId.put("CHANNEL_ID", R.id.textChannelId);
// ...
}
private TextView getTextViewFor(String bundleKey) {
String textViewId = keyToTextViewId.get(bundleKey);
return (textViewId != null ? findViewById(textViewId) : null);
}
private void updateTextViews(Bundle bundle) {
for (String key : bundle.keySet()) {
TextView tv = getTextViewFor(key);
if (tv != null) {
tv.setText(bundle.get(key).toString());
}
}
}
// ...
Bundle bundle = CancelPaymentActivity.this.getIntent().getExtras();
updateTextViews(bundle);
在后一种情况下,您可能需要额外的代码来过滤实际显示的键以及显示顺序。您可能还希望为每个TextView定义标签,其中标签包含bundle键或其用户友好版本。您可以在中找到有关如何执行此操作的详细信息。请显示您已经尝试过的内容。@tavnab检查我的编辑question@tavnab你理解我的问题吗?我理解问题,但仍然没有足够的信息来解决它。您已经提供了示例代码,但究竟是哪个部分不起作用?您是否在向TextView添加任何文本时遇到问题,或者仅添加捆绑包中的文本时遇到问题?您是否已将该值记录在v变量中,以确保返回在第一个活动中分配的值?如果你可以通过一个意图将一个字符串从一个活动传递到另一个活动,并且你可以在文本视图中放置任意字符串,那么你的问题就基本解决了;让我们知道其中哪些不起作用,以便我们能够提供帮助。以下是一些答案,可以帮助您使用构建完整解决方案所需的组件:,
// Once the TextViews are created, access them through this map
private Map<String, TextView> keyToTextView = new HashMap<String, TextView>();
// Helper function to create consistent TextViews, creating & adding a new
// one if needed
private TextView getTextViewFor(String bundleKey, Layout layout) {
TextView tv = keyToTextView.get(bundleKey);
if (tv != null) {
return tv;
} else {
tv = new TextView(this);
tv.setLayoutParams(new LayoutParams(/* updated as needed */));
keyToTextView.put(key, tv);
layout.addView(tv);
return tv;
}
}
// ...
private void updateTextViews(Bundle bundle, Layout layout) {
for (String key : bundle.keySet()) {
getTextViewFor(key, layout).setText(bundle.get(key).toString());
}
}