如何使用多个textview填充列表视图中的多个数据?

问题描述 投票:0回答:1

我是android的新手。我正在一个项目工作,我有一个问题。我如何从ArrayList<the_class>获取数据并将它们填充到listview?有一个xml文件,其中包含6个文本视图,必须使用类项的上下文填充。谢谢

 <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文件的一部分。

java android xml listview android-studio
1个回答
1
投票

实际上它非常简单。

我创建了一个模型

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;
    }


}

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

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);
    }
}

在主活动布局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

© www.soinside.com 2019 - 2024. All rights reserved.