android開發之雜記(1)
1,ListView的內容為空白時候的處理
使用listView或者gridView時,當列表為空白時,有時需要顯示一個特殊的empty view來提示使用者
private void setupViews() { LOG.debug(""); mListView = (ListView) findViewById(R.id.list); ((ViewGroup) mListView.getParent()).addView(mErrorView); mListView.setEmptyView(mErrorView); mProgressBar = (ProgressBar) findViewById(R.id.pb_progress); }另可參考:http://gundumw100.iteye.com/blog/1165673
2,ANDROID中ANDROID:VISIBILITY的3中屬性在Android中控制項或者布局的可見度android:visibility有3中情況,如View.VISIBLE,View.UNVISIBLE,View.GONE這3中情況。View.VISIBLE很顯然就是可見,View.UNVISIBLE是不是可見,但是在這種情況下它會佔據空間。就是說如果控制項的android:visibility設定為View.UNVISIBLE的話,雖然控制項隱藏了,但是它還是佔著畫面中它布局的位置,這一點和C#中的意義不一樣。而
View.GONE則是指該控制項的不可見,也不佔用系統布局中的空間。
3,Fragment中建立事件回調,資料通訊方法一些情況下,可能需要fragment和activity共用事件,一個比較好的做法是在fragment裡面定義一個回調介面,然後要求宿主activity實現它。當activity通過這個介面接收到一個回調,它可以同布局中的其他fragment分享這個資訊。例如,一個新聞顯示應用在一個activity中有兩個fragment,一個fragment A顯示文章題目的列表,一個fragment B顯示文章。所以當一個文章被選擇的時候,fragment A必須通知activity,然後activity通知fragment B,讓它顯示這篇文章。這個情況下,在fragment A中聲明一個這樣的介面OnArticleSelectedListener:
public static class FragmentA extends ListFragment { ... // Container Activity must implement this interface public interface OnArticleSelectedListener { public void onArticleSelected(Uri articleUri); } ...}之後包含這個fragment的activity實現這個OnArticleSelectedListener介面,用覆寫的onArticleSelected()方法將fragment A中發生的事通知fragment B。為了確保宿主activity實現這個介面,fragment A的onAttach() 方法(這個方法在fragment 被加入到activity中時由系統調用)中通過將傳入的activity強制類型轉換,執行個體化一個OnArticleSelectedListener對象:
public static class FragmentA extends ListFragment { OnArticleSelectedListener mListener; ... @Override public void onAttach(Activity activity) { super.onAttach(activity); try { mListener = (OnArticleSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); } } ...}如果activity沒有實現這個介面,fragment將會拋出ClassCastException異常,如果成功了,mListener將會是activity實現OnArticleSelectedListener介面的一個引用,所以通過調用OnArticleSelectedListener介面的方法,fragment A可以和activity共用事件。比如,如果fragment A是ListFragment的子類,每一次使用者點擊一個清單項目,系統調用fragment中的onListItemClick() 方法,在這個方法中可以調用onArticleSelected()方法與activity共用事件。
public static class FragmentA extends ListFragment { OnArticleSelectedListener mListener; ... @Override public void onListItemClick(ListView l, View v, int position, long id) { // Append the clicked item's row ID with the content provider Uri Uri noteUri = ContentUris.withAppendedId(ArticleColumns.CONTENT_URI, id); // Send the event and Uri to the host activity mListener.onArticleSelected(noteUri); } ...}4,Action Bar參考:http://www.open-open.com/lib/view/open1373981182669.html