Давайте предположим, что вы имеют значения 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.
Пожалуйста, покажите, что вы уже пытались сделать. – tavnab
@tavnab проверить мой вопрос в вопросе – ANdroid
@tavnab действительно понял мою проблему? – ANdroid