2015-06-29 2 views
-3

Как я могу отображать данные Bundle в текстовое представление по одному?Как я могу отображать данные Bundle в textview по одному?

У меня есть активность, у которой есть 10 видов текстового вида. Мне нужно отобразить все данные пакета в текстовое представление.

Это формат связки.

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 protected], 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); 

INDUSTRY_TYPE_ID == Имя TextView

+0

Пожалуйста, покажите, что вы уже пытались сделать. – tavnab

+0

@tavnab проверить мой вопрос в вопросе – ANdroid

+0

@tavnab действительно понял мою проблему? – ANdroid

ответ

0

Давайте предположим, что вы имеют значения Bundle и layout (например, ListLayout) в вашей деятельности, к которой вы хотите добавить TextView для некоторых или всех записей в вашем комплекте.

Если ваш макет является статическим, ваши TextView s уже определены, и вы знаете, какое расслоение значения идет, в котором 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); 

Если макет не является статичным (то есть вы не знаете, что пучки вы получаете и нужно создавать TextViews во время выполнения), то это аналогично предыдущему, за исключением того, что вам нужно создать свой TextViews & также называют layout.addView(TextView), как вы идете:

// 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()); 
    } 
} 

в последнем случае, вы, вероятно, хотите, дополнительный код для фильтрации, какие клавиши на самом деле отображения, и в каком порядке. Возможно, вам также захочется определить метки для каждого TextView, где метка содержит ключ пакета (или некоторую удобную для пользователя версию). Вы можете найти подробную информацию о том, как это сделать в this answer.

Смежные вопросы