Создайте несколько текстовых представлений и динамически присвойте им значения
У меня есть список, в котором я показываю контакты Имя. Есть еще значения, которые связаны с представлением списка. Когда я нажимаю строку в представлении списка, я отправляю Hashmap в другое действие и, основываясь на размере HashMap, хочу динамически создавать TextView и присваивать значения этим динамически создаваемым текстовым представлениям, таким как Name, Email, PhoneNo.
listview.OnItemClickListner
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
// TODO Auto-generated method stub
@SuppressWarnings("unchecked")
HashMap<String, String> o = (HashMap<String, String>) mListView.getItemAtPosition(position);
Intent i = new Intent (Contacts.this , Contacts_Detail.class);
i.putExtra("HASHMAP", o);
startActivity(i);
}
});
Контакт Детальный класс
public class Contacts_Detail extends Activity {
LinearLayout mLinearlayout;
TextView rowTextView;
HashMap<String, String> ModuleName;
ArrayList<String> KEY;
List<TextView> allTxts;
private LayoutInflater inflater;
View layout;
@SuppressWarnings("unchecked")
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mLinearlayout = (LinearLayout) findViewById(R.id.LinearLayout);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
//map = HashMap<String, String>>getIntent().getSerializableExtra("MODULE_LIST");
ModuleName = (HashMap<String, String>) extras.getSerializable("HASHMAP");
//KEY = (ArrayList<String>) extras.getSerializable("KEY");
}
else
{
Toast.makeText(getApplicationContext(), "No Data Found", Toast.LENGTH_LONG).show();
return;
}
int N = ModuleName.size(); // total number of textviews to add
final TextView[] myTextViews = new TextView[N]; // create an empty array;
allTxts = new ArrayList<TextView>();
for (int i = 0; i < N; i++) {
// create a new textview
rowTextView = new TextView(this);
allTxts.add(rowTextView);
// set some properties of rowTextView or something
rowTextView.setText("This is TextView #" + i);
rowTextView.setId(i);
// add the textview to the linearlayout
mLinearlayout.addView(rowTextView);
// save a reference to the textview for later
myTextViews[i] = rowTextView;
}
}}
Как видите, все текстовые представления создаются успешно. Но я хочу назначить значения HASHMAP всем динамически создаваемым текстовым представлениям. Как этого добиться.?
Могу ли я использовать концепцию макета Inf later для этого.?
заранее спасибо
2 ответа
Попробуй это
Перед вашим for
цикл добавить
Set<String> keys = ModuleName.keySet();
String[] values = new String[N];
int i = 0;
for (String key : keys) {
values[i] = ModuleName.get(key);
i++;
}
а затем внутри for
цикл, установите текст в TextView
rowTextView.setText(values[i]);
Надеюсь, поможет.
Set<String> keys = ModuleName.keySet();
String[] values = new String[N];
int i = 0;
for (String key : keys) {
values[i] = ModuleName.get(key);
i++;
}
for (int i=0;i<values .length;i++)
{
final int index =i;
LinearLayout child_insidenew_layout = new LinearLayout(this);
child_insidenew_layout.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams child_inside_paramsnew = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
child_insidenew_layout.setLayoutParams(child_inside_paramsnew);
child_insidenew_layout.setGravity(Gravity.CENTER_VERTICAL);
child_insidenew_layout.setBackgroundResource(R.drawable.layout_selector);
TextView textview = new TextView(this);
LinearLayout.LayoutParams image_params = new LinearLayout.LayoutParams(imageWidth,imgHeight);
image_params.setMargins(margin,margin, margin, margin);
child_insidenew_layout.addView(textview, image_params);
TextView textrootname = new TextView(getActivity());
LinearLayout.LayoutParams TextView_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
textrootname.setSingleLine(true);
textrootname.setEllipsize(TruncateAt.MARQUEE);
textrootname.setFocusableInTouchMode(true);
textrootname.setFreezesText(true);
textrootname.setMarqueeRepeatLimit(-1);
textrootname.setFocusable(true);
textrootname.setSelected(true);
textrootname.settext("values indeax of i" )
textrootname.setGravity(Gravity.CENTER);
textrootname.setTextColor(Color.BLACK);
textrootname.setTextSize(15);
child_insidenew_layout.addView(textrootname, TextView_params);
child_inside_layout.addView(child_insidenew_layout, child_inside_paramsnew);
}