我在app-widget中使用GridView。我想在没有数据的情况下为app-widget设置默认文本。我尝试使用getLoadingView()方法,但它无法正常工作。
WidgetViewsFactory.java的getLoadingViewMethod():
@Override
public RemoteViews getLoadingView() {
Log.e("textview is displayed","true");
RemoteViews row = new RemoteViews(mContext.getPackageName(), R.layout.widget_default_display);
row.setTextViewText(R.id.txt_default_widget,"DEFAULT TEXT");
return row;
}
widget_default_display.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="180dp">
<TextView
android:id="@+id/txt_default_widget"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/no_notifications"
android:textColor="@color/txt_sub_title_gray"
android:textSize="@dimen/txt_title_size"/>
</LinearLayout>
请建议我解决一下。
答案 0 :(得分:2)
应用程序窗口小部件中的View
与应用程序的本地布局中的AdapterView
非常相似。要在View
集合为空时显示某个View
,您需要将AdapterView
设置为RemoteViews
上的空setEmptyView()
对于Widget,AppWidgetProvider
类具有RemoteViews
方法。在包含GridView
的布局中创建主RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
...
rv.setEmptyView(R.id.grid_view, R.id.txt_default_widget);
对象后,您可以在View
中使用此方法。例如:
txt_default_widget
请注意,空TextView
- GridView
select c.customer
,d.txn_date
,coalesce(t.tag,0) as tag
from (select date_add (from_date,i) as txn_date
from (select date '2017-01-01' as from_date
,date '2017-01-05' as to_date
) p
lateral view
posexplode(split(space(datediff(p.to_date,p.from_date)),' ')) pe as i,x
) d
cross join (select distinct
customer
from t
) c
left join t
on t.customer = c.customer
and t.txn_date = d.txn_date
;
(在本例中)必须与c.customer d.txn_date tag
A 2017-01-01 1
A 2017-01-02 1
A 2017-01-03 0
A 2017-01-04 1
A 2017-01-05 0
B 2017-01-01 0
B 2017-01-02 0
B 2017-01-03 1
B 2017-01-04 0
B 2017-01-05 0
位于同一主布局中,而不是在项目中布局。
答案 1 :(得分:1)
您可以为适配器设置空视图。
View emptyView = LayoutInflater.from(yourContext).inflate(R.layout.xml_for_empty_view, null, false);
yourAdapter.setEmptyView(emptyView);