Я пробовал все, но я не могу заставить его работать!Как программно добавлять элементы в ListView из ArrayAdapter?
У меня есть объект, mObject
, который сам содержит arrayList
объектов, которые я хочу, чтобы отобразить с TextView
mObject.getName()
ниже. Как это сделать, проблема в том, что sub ArrayList
может отличаться по размеру.
Как я не знаю, сколько предметов он вернет, я не могу поместить его в свой макет ListView
, поэтому мне нужно сделать это программно.
Как мне это сделать ??
EDIT: подробнее ...
В моих «holder.linearLayout
» Я хочу TextView
, один для каждого элемента возвращается из mObject.getSets()
, это может быть один, это может быть 10. Вот почему я не могу поставить в моей llSets ListView
файл макет, я не знаю, сколько TextView
s положить в
EDIT:.
Найдено solotion: в LinearLayout в моем макете ListView. Я просто петельные через все элементы в суб ArrayList и добавил их так:
holder.mLinearLayout.removeAllViews();
for (Set s : mExercise.getSets()) {
TextView mSetTextView = new TextView(mContext);
mSetTextView.setText("Text " + s.getText());
holder.mLinearLayout.addView(mSetTextView);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
CustomObject mObject = CustomObjects.get(position);
if (convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.lv_exercise, null);
holder = new ViewHolder();
holder.tvEName = (TextView) convertView.findViewById(R.id.tvEName);
// I Want to add a new TextView to this linyearLayout for each item returned by mObject.getSets();
holder.linearLayout = (LinearLayout) convertView.findViewById(R.id.llSets);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.tvEName.setText(mObject.getName());
return convertView;
}
llSets ListView Layout:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_marginBottom="10dp">
<TableRow android:layout_marginBottom="5dp">
<TextView
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="2"
android:text="Name"
android:gravity="center"
android:id="@+id/tvEName"
android:textSize="22sp"
android:fadingEdge="horizontal"
android:ellipsize="end"
android:singleLine="true"/>
</TableRow>
<TableRow>
<LinearLayout
android:id="@+id/llSets"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<!-- I want textviews here, one for each item returned from mObject.getSets()
As I don't know how many items it will return, i need to add them programatically, I guess ?.
-->
</LinearLayout>
</TableRow>
</TableLayout>
В чем проблема с текущим кодом? Кажется, это нормально – Fahim
Я не понимаю, что вы хотите делать !!! –