Java 在通知中填充ListView时出现问题
我有个通知。当它展开时,我希望它显示一个实时填充数据的ListView 以下是通知的扩展视图布局/Notification_expanded.xml: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
<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。摆弄着它,但还不能让它工作。所以请随时通知我。