Java 在通知中填充ListView时出现问题

Java 在通知中填充ListView时出现问题,java,android,android-layout,android-listview,Java,Android,Android Layout,Android Listview,我有个通知。当它展开时,我希望它显示一个实时填充数据的ListView 以下是通知的扩展视图布局/Notification_expanded.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_hei

我有个通知。当它展开时,我希望它显示一个实时填充数据的ListView

以下是通知的扩展视图布局/Notification_expanded.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="right|top">

    <ListView
        android:id="@+id/listViewWidget"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
下面是要附加到layout/list_row.xml的单个行的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:background="@android:color/black" >

    <TextView
        android:id="@+id/heading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toRightOf="@id/imageView"
        android:singleLine="true"
        android:text="Heading"/>

    <TextView
        android:id="@+id/content"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@id/heading"
        android:text="Content"/>

</RelativeLayout>
根据我看到的示例,我需要一个RemoteViewFactory来生成我需要的RemoteView 然后附加到上面通知的扩展视图中描述的listViewWidget

公共类ListProvider实现RemoteViewsFactory{

    private Context context;
private ArrayList<String> listItemList = new ArrayList<String>();

    public ListProvider(Context context){
        this.context = context;
        populateListItem();
    }

public RemoteViews getViewAt(int position) {
    final RemoteViews remoteView = new RemoteViews(
            context.getPackageName(), R.layout.list_row);
    ListItem listItem = listItemList.get(position);
    remoteView.setTextViewText(R.id.heading, listItem.heading);
    remoteView.setTextViewText(R.id.content, listItem.content);

    return remoteView;
}
}

以下是我的问题开始的活动:

        RemoteViews expandedView =
                new RemoteViews(getPackageName(), R.layout.notification_expanded);

        ListProvider lp = new ListProvider(this);

        //notification.bigContentView = expandedView;
        for (int ii = 0; ii< lp.getCount(); ii++) {
            notification.bigContentView = lp.getViewAt(ii);
        }
当上面的代码运行时,我会在ListView的第一个元素中显示ArrayList的最后一个元素

我理解为什么-notification.bigContentView是在其扩展时表示通知的RemoteView 我将其设置为从保存数据的ArrayList中的最后一个元素创建的RemoteView


如何更改此设置,以便将ArrayList中的每个元素附加到notification.bigContentView?是否可以以典型方式使用ArrayAdapter更新ListView?

我的ArrayList的最后一个元素显示在ListView的第一个元素中。。不,不在列表视图中。您根本没有使用listview。您仅将行布局用作bigcontentview。因此,您将看到两个文本视图。是否可以以典型方式使用ArrayAdapter更新ListView。我不知道这是否可行,但我认为arrayadapter应该是这样的。现在我发现它看起来像是你用过的。为什么不告诉别人?@greenapps-我没有提到我对laaptu的使用,因为我认为它与此无关,谷歌会很快向任何感兴趣的人表明它的使用。我将使用ArrayAdapter进行实验,并简要报告我的结果。我不认为这是相关的,当然这是相关的。会节省我的时间。现在,为了节省时间,您最好再次阅读这篇文章,因为普通的阵列适配器是不行的。我认为您必须使用这里描述的WidgetService。摆弄着它,但还不能让它工作。所以请随时通知我。