gpt4 book ai didi

Android 在 ListView 中添加 View

转载 作者:搜寻专家 更新时间:2023-11-01 08:43:50 24 4
gpt4 key购买 nike

如何在 ListView 的 LinearLayout 中添加 View ?我想在 ListView 中显示一些附加信息,我想将它们添加到一个 for 循环中,遍历要添加的项目。这是我目前拥有的代码:

Activity :

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >

<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:scrollbars="vertical"
android:layout_marginTop="0dp" />

</LinearLayout>

list_recycler:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">

<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="6dp"
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp">

<TextView android:id="@+id/list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/textColor"
android:textSize="16sp"
android:layout_alignParentLeft="true"/>

<TextView android:id="@+id/list_title_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/textColor"
android:textSize="16sp"
android:layout_alignParentLeft="true"/>


<!-- VIEWS SHOULD BE ADDED HERE -->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">

</LinearLayout>

</RelativeLayout>

</LinearLayout>

适配器:

public class RVAdapter extends RecyclerView.Adapter<RVAdapter.RecyclerViewHolder> {

public static class RecyclerViewHolder extends RecyclerView.ViewHolder {

TextView personName;
TextView personAge;

RecyclerViewHolder(View itemView) {
super(itemView);
personName = (TextView)itemView.findViewById(R.id.person_name);
personAge = (TextView)itemView.findViewById(R.id.person_age);
}
}

List<Items> list;

public RVAdapter(List<Items> list){
this.list = list;
}

@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.list_recycler, viewGroup, false);
return new RecyclerViewHolder(v);
}

@Override
public void onBindViewHolder(RecyclerViewHolder recyclerViewHolder, int i) {
recyclerViewHolder.personName.setText(persons.get(i).name);
recyclerViewHolder.personAge.setText(persons.get(i).age);
}

@Override
public int getItemCount() {
return persons.size();
}
}

项目:

public class Items {
String name;
String age;

public Items(String name, String age) {
this.name = name;
this.age = age;
}
}

如何在 ListView 的 LinearLayout 中添加 View ?不同的 ListView Items 中的每个 LinearLayout 应该包含不同的 View ,因此它们不能都相同。

我的数据会是什么样子:

ListView
Entry1
LinearLayout
SubEntry1
SubEntry2
SubEntry3
Entry2
LinearLayout
SubEntry1
SubEntry2
SubEntry3
Entry3
LinearLayout
SubEntry1
SubEntry2
SubEntry3

因此 Entry1..Entry3 是 ListView,所有子条目都应该是通过代码添加到其对应 ListView 条目内的 LinearLayout 中的 TextView

最佳答案

给布局一个id,比如@+id/item_content,然后在你的getView中做:

itemContent = (LinearLayout)convertView.findViewById(R.id.item_content);
itemContent.removeAllViews();
//then you can add your views to the layouts depending on each item here using
itemContent.addView(yourView);

您不能简单地遍历 ListView 项并向其中添加内容。这就是我们拥有适配器的目的。更新数据并通知适配器数据已更改。

我会建议您在这种情况下使用 RecyclerView

编辑

你添加的不是数据结构,而是你的布局结构。无论如何,你应该拥有这个。

public class RowItem {
private final String title;
private final String desc;
private ArrayList<String> contents;
}

然后你会这样做;

itemContent = (LinearLayout)convertView.findViewById(R.id.item_content);
itemContent.removeAllViews();
//then you can add your views to the layouts depending on each item here using
for(String item : rowItem.getContents()){
TextView textView = new TextView(parent.getContext());
textView.setText(item);
itemContent.addView(textView);
}

阅读RecyclerViewExpandableListView

关于Android 在 ListView 中添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30290981/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com