android開發之雜記(1)

來源:互聯網
上載者:User

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



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.