學習下關於ViewStub執行個體的用法及帶Drawable的TextView的妙用,viewstubdrawable
在項目中,我們可能有多種資料來源比如:
裡面有ListView也有當獲得資料為空白的時候顯示的空資訊。根據點擊的項目還是差事不同,顯示的空訊息也不同。a.沒有收藏的項目,b目前沒有收藏的差事。
其實實現方法很多。也都可以實現。不過用viewStub在這裡最恰當不過了。
先看此Activity的布局吧。布局檔案:
<
FrameLayout android:id="@+id/layoutFrm"
android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:background
="@color/background_color" > <ListView xmlns:ptr="http://schemas.android.com/apk/res-auto"
android:id="@+id/lstV_fav_task" -----------若干你懂得------- ptr:ptrMode
="pullFromEnd" > </com.handmark.pulltorefresh.library.PullToRefreshListView> <ViewStub android:id="@+id/viewStub"
android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout
="@layout/activity_task_favourite_nodata" /> </FrameLayout>
在代碼裡初始化下!那這個ViewStub載入的布局檔案的activity_task_favorite_nodata又在哪裡呢?
看布局:
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/txtV_nodata" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:drawablePadding="20dp" android:drawableTop="@drawable/favourite_nodata" android:gravity="center_horizontal" android:text="@string/my_task_fav_nodata" android:textColor
="@color/listview_header_textcolor" />
那等於說介個布局其實就是個Textview了。鬧了半天,我以為還要搞個Textview還要高個Imageview,弱爆了,啥都不懂出來混看人家寫的我又悲劇了。
(就是這個drawable/favourite_nodata.png檔案啦)
代碼裡該怎麼辦呢?先設定為不可見(預先載入下)幹。不難。關鍵道哥不學習。
layoutEmpty =
(TextView) viewStub.inflate(); layoutEmpty.setVisibility(View.GONE);
肯定要擷取資料了。。那得有個方法。在這裡:
private void getFavProjects()
得到資料裡,判斷datalist.size 。。。有了。。。下面你懂得
private void setEmptyViewByDataList(int type) { if (datalist.size() > 0) { layoutEmpty.setVisibility(View.GONE); } else { if (type == TYPE_PROJECT) layoutEmpty.setText(R.string.my_project_fav_nodata); else layoutEmpty.setText(R.string.my_task_fav_nodata); layoutEmpty.setVisibility(View.VISIBLE); } }