Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android開發之雜記(1)

android開發之雜記(1)

編輯:關於Android編程

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



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved