java - 在 ListView 中显示 POJO 对象的多个字段

标签 java android listview

我在 Android 应用程序中有一个 POJO 列表,并且当前正在 ListView /列表项中显示其中一个字段,如下所示:

List<NotificationItem> notifItems;
// snip, populate

ArrayAdapter adapter = new ArrayAdapter<>(this, R.layout.notification_item, notifItems);

ListView listView = (ListView) findViewById(R.id.notification_listview);
listView.setAdapter(adapter);

据我了解,listivew 或适配器使用 POJO 的 toString,即

public String toString() {
    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm");
    return _notificationTitle + " | " + dateFormatter.format(_notificationReceivedDate);
}

R.id.notificationitem 是

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="10dip"
android:textSize="16sp"
android:textStyle="bold"></TextView>

到目前为止一切顺利,但我想要做的是将元素添加到 notificationitem 布局文件,然后更新 Java 代码以填充新字段。

这是如何完成的?我不太明白适配器如何知道/将 toString 值放入通知项中的一个字段中。

最佳答案

public class NotificationItem {
    //your fields here
}
//-----------------------
public class NotifAdapter extends BaseAdapter {

    Context context;
    List<NotificationItem> data;

    public NotifAdapter(Context context, List<NotificationItem> data) {
        this.context = context;
        this.data = data;
    }

    @Override
    public int getCount() {
        return data.size();
    }

    @Override
    public Object getItem(int position) {
        return data.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = layoutInflater.inflate(R.layout.your_row_layout,parent, null);
        TextView tx = convertView.findViewById(R.id.your_widget_inside_row_layout);
        tx.setText(data.yourDataPropery);
        return convertView;
    }
}
// In your activity
NotifAdapter adapter = new NotifAdapter(this, ArrayList<NotificationItem>);
listView.setAdapter(adapter);

关于java - 在 ListView 中显示 POJO 对象的多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43233628/

相关文章:

java - 为什么 C 需要原型(prototype)函数而 Java 不需要?

Android 进度条不允许切换选项卡

android - 从网站提取特定文本 block 到 Android 应用程序

android - 如何使用 ListView 的过度滚动功能?

滚动超过顶部时android listview更新列表

Android:GridView 或 ListView 中 "more"的默认图标

java - 如何解决 Java 中缺少抽象字段的问题?

java - 重定向到登录页面后,如何保留带有参数的请求 url?

java - 在java中使用泛型类型

android - onbackpressed方法错误