gpt4 book ai didi

java - 如何使用多个 TextView 在 ListView 中填充多个数据?

转载 作者:行者123 更新时间:2023-12-02 11:50:39 24 4
gpt4 key购买 nike

我是安卓新手。我正在从事一个项目,我有一个问题。我如何从 ArrayList<the_class> 获取数据并将它们填充到 listview ?有一个 xml 文件,其中包含 6 个 TextView ,必须用类项的上下文填充这些 TextView 。谢谢

 <LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="10dp">

<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">

<TextView
android:text="origin"
android:textSize="19dp"
android:id="@+id/origin"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

<TextView
android:text="destination"
android:textSize="19dp"
android:paddingLeft="15dp"
android:id="@+id/destination"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

*xml 文件的一部分。

最佳答案

其实很简单。

我创建了一个模型

public class Model {

String top, bottom;

public Model(String top, String bottom) {
this.top = top;
this.bottom = bottom;
}

public String getTop() {
return top;
}

public void setTop(String top) {
this.top = top;
}

public String getBottom() {
return bottom;
}

public void setBottom(String bottom) {
this.bottom = bottom;
}
}

然后,我需要为其创建一个 ListView 适配器。

public class ListAdapter extends ArrayAdapter<Model> {


private Context activityContext;
private List<Model> list;
public static final String TAG = "ListView";

public ListAdapter(Context context, List<Model> list){
super(context, R.layout.single_listview, list);
this.activityContext = context;
this.list = list;
}


@Override
public View getView(final int position, View view, ViewGroup viewGroup){

final ViewHolder viewHolder;

if (view == null) {
view = LayoutInflater.from(activityContext).inflate(R.layout.single_listview, null);
viewHolder = new ViewHolder();

viewHolder.top = (TextView) view.findViewById(R.id.top);
viewHolder.bottom = (TextView) view.findViewById(R.id.bottom);

viewHolder.top.setText(list.get(position).getTop());
viewHolder.bottom.setText(list.get(position).getBottom());

view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
}

return view;
}

private static class ViewHolder {

TextView top;
TextView bottom;
}


}

在我的主要 Activity 中,我执行以下代码

public class MainActivity extends AppCompatActivity {

ListView listview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

listview = (ListView) findViewById(R.id.listview);

List<Model> list = new ArrayList<>();
list.add(new Model("top-one", "bot-one"));
list.add(new Model("top-two", "bot-two"));
list.add(new Model("top-three", "bot-three"));
list.add(new Model("top-four", "bot-four"));
list.add(new Model("top-five", "bot-five"));
list.add(new Model("top-six", "bot-six"));
list.add(new Model("top-seven", "bot-seven"));
list.add(new Model("top-eight", "bot-eight"));

ListAdapter adapter = new ListAdapter(listview.getContext(), list);
listview.setAdapter(adapter);
}
}

主 Activity 布局 xml 内部

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.fuhnatik.customlistview.MainActivity">

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</android.support.constraint.ConstraintLayout>

最后,在listview适配器布局xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:padding="6dip"
android:orientation="vertical">


<TextView
android:id="@+id/top"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:text="TOP SECTION HERE"
android:textSize="16sp" />

<TextView
android:id="@+id/bottom"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="BOTTOM SECTION HERE"
android:textSize="12sp" />



</LinearLayout>

结果:

enter image description here

关于java - 如何使用多个 TextView 在 ListView 中填充多个数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47894563/

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