每个项目有 2 个 TextView 的 Android ListView

标签 android android-listview adapter

我在网上看到的所有示例每个项目仅包含 1 个 TextView,并且它们从数组加载数据。我不明白如何指定哪些数据去哪里。例如,我的项目布局如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <TextView android:id="@+id/receiver"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

如何将数据保存在数组中,以便它可以在具有此布局的 ListView 中使用?

最佳答案

这是自定义列表适配器:

private class ListAdapter extends ArrayAdapter<RSSItem> {

        private List<Item> items;

        public ListAdapter(Context context, int textViewResourceId, List<Item> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;

            if (v == null) {
                LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.list_item, null);
            }

            Item item = items.get(position);

            if (item != null) {             
                TextView title = (TextView) v.findViewById(R.id.tvTitle);
                TextView description = (TextView) v.findViewById(R.id.tvDescription);
                if (title != null) {
                    title.setText(item.getTitle());
                }
                if (description != null) {
                    description.setText(item.toString());
                }
            }

            return v;
        }
    }

这是一个 Item 类,女巫将保存您的数据:

public class Item {
    private String title = null;
    private String description = null;

    RSSItem() {
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getTitle() {
        return title;
    }

    public String getData() {
        return data;
    }
}

...这里是一个类,您可以使用它获取某种数组中的所有列表数据:

public class ListData {
    private int itemcount = 0;
    private List<Item> itemlist;

    ListData () {
        itemlist = new Vector<Item>();
    }

    int addItem(Item item) {
        itemlist.add(item);
        itemcount++;
        return itemcount;
    }

    Item getItem(int location) {
        return itemlist.get(location);
    }

    List<Item> getAllItems() {
        return itemlist;
    }

    int getItemCount() {
        return itemcount;
    }
}

在您的主类(Activity)中,您应该正确填写您的数据。

关于每个项目有 2 个 TextView 的 Android ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6793999/

相关文章:

android - OnItemClick 和 OnItemLongClick 在仅将 Button 放入 ListView 时不起作用

android - ViewHolder 中的 kotlin-android-extensions

android - 如何解决android上的 "setOnKeyListener(View.OnKeyListener) in the type View is not applicable for the arguments (new OnKeyListener(){})"错误?

android - Android2.1读取邮件附件?

android - ListView CAB勾选项着色

android - 如何从特定项目位置开始显示 ListView

android - 如何解决我的应用程序中的图像适配器错误?

android - 我应该使用哪个 : GAE or AWS?

android - BroadcastReceiver 的 onReceive 中 Intent extra 为空

java - 如何清除ListView选择?