我已经尝试了所有的东西,但我没有让它发挥作用!
我有一个对象mObject
,它本身包含一个arrayList
个对象,我希望在TextView
mObject.getName()
以下ArrayList
显示这些对象。我如何做到这一点,问题是子ListView
的大小可能会有所不同。
由于我不知道它将返回多少项,我无法将其放入我的holder.linearLayout
布局中,因此我需要以编程方式进行。
我该怎么办?
编辑:更多信息......
在我的“TextView
”中,我想要一个mObject.getSets()
,每个项目一个ListView
,它可能是一个,可能是10.这就是为什么我不能放在我的llSets TextView
布局文件中,我不知道要放入多少holder.mLinearLayout.removeAllViews();
for (Set s : mExercise.getSets()) {
TextView mSetTextView = new TextView(mContext);
mSetTextView.setText("Text " + s.getText());
holder.mLinearLayout.addView(mSetTextView);
}
个。
编辑:
发现一个孤独: 在ListView布局中的LinearLayout中。我只是循环遍历子ArrayList中的所有项目,并添加如下:
@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;
}
<?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>
llSets ListView布局:
{{1}}
答案 0 :(得分:0)
我建议您了解如何创建自定义ArrayAdapter
以在ListView
中显示您的数据。
This是一个很好的教程,可以解释这一点。我强烈推荐本教程,以及任何其他有此类问题的教程。
答案 1 :(得分:0)
您必须在现有列表视图中添加另一个自定义ArrayAdapter的列表视图。类似的东西(在你的活动中)
ArrayAdapter<mObject> adapter = new CustomAdapterForMyObjects();
//Add Objects with Lists inside to your adapter
mObject obj1 = new mObject("Hello World");
//Add listitems to your Object
mObject obj2 = new mObject("Second one");
//Add listitems to your Object
lv.setAdapter(adapter);
在自定义适配器中,您实例化另一个ListView并添加对象的项目。 (在getView()中)
//instantiate ListView
ListView lv = convertView.findViewById(R.id.lv_forTheItemsOfYourObject)
//get current object for that position
mObject object = list.get(position);
//add your items to the Adapter, in this case strings
ArrayAdapter<String> adapterForItems = new ArrayAdapter<String>(context, R.layout.rowforitems, object.getItems());
现在应该添加对象的所有项目。
要点: 关键是使用集成在另一个列表视图中的列表视图。