<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                Android是在Android 3.0(API level 11)開始引入Fragment的(為了兼容較低版本的設備使用支持庫類)。可以把Fragment看成Activity中的模塊,這個模塊有自己的布局,有自己的生命周期(由托管activity調用其周期方法),單獨處理自己的輸入,在Activity運行的時候可以加載或者移除Fragment模塊。 ListFragment是Fragment的子類,內置列表顯示支持功能。ListFragment通過內置的ListView顯示綁定在其上面的數據。下面就通過例子了解具體的用法: 1、模型層 ?Day類和DayLab類 通過DayLab對象的getDays()方法獲取用來綁定的數據。 Day.java ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ~~~ package com.example.showdays; import java.util.ArrayList; public class Day { private String mTitle; public String getTitle() { return mTitle; } public void setTitle(String mTitle) { this.mTitle = mTitle; } } ~~~ DayLab.java ? ? ? ? ? ? ? ? ? ? ? ? ?? ~~~ package com.example.showdays; import java.util.ArrayList; public class DayLab { private ArrayList<Day> mDays; public DayLab() { mDays = new ArrayList<Day>(); for (int i = 1; i <= 10; i++) { Day day = new Day(); day.setTitle("Title #" + i); mDays.add(day); } } public ArrayList<Day> getDays() { return mDays; } } ~~~ 2、創建DayListFragment類 繼承ListFragment類。并給其內置的ListView設置Adapter DayListFragment.java ? ? ? ? ? ? ~~~ package com.example.showdays; import java.util.ArrayList; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.widget.ArrayAdapter; public class DayListFragment extends ListFragment { private ArrayList<Day> days; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DayLab dayLab = new DayLab(); this.days = dayLab.getDays(); ArrayAdapter<Day> adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, days); // 第一個參數: Context對象,使用第二個參數的資源ID需要該Context對象 // 第二個參數: 資源ID,可定位ArrayAdapter用來創建View對象的布局,這里的實參是 Android SDK提供的預定義布局資源 // 第三個參數: 數據集 setListAdapter(adapter);// 給DayListFragment內置的ListView設置adapter } } ~~~ 3、創建DayActivity類 繼承FragmentActivity類。托管DayListFragment對象 其布局如下: activity_day.xml ? ? ? ? ? ? ? ? ? ? ? ~~~ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/fragmentContainer" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> ~~~ 在類中引用此布局文件,并將DayListFragment對象放置在id為fragmentContainer的FrameLayout容器視圖中。 DayActivity.java? ? ? ? ? ? ? ? ? ? ?? ~~~ package com.example.showdays; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class DayActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_day); FragmentManager fm = getSupportFragmentManager(); // 繼承支持庫類FragmentActivity獲取FragmentManager對象的方法 // 若繼承Activity使用getFragmentManager() Fragment fragment = fm.findFragmentById(R.id.fragmentContainer); if (fragment == null) { // 查看fragment事務隊列中是否存在此事物 fragment = new DayListFragment(); fm.beginTransaction().add(R.id.fragmentContainer, fragment) .commit(); // 提交事務(資源ID作為唯一標識符且通知視圖位置) } } } ~~~ 至此程序就可以正常運行了,運行效果如下圖: ![](https://box.kancloud.cn/2016-02-17_56c4396bafd18.jpg) 可以看到,已經呈現出列表形式,但是要顯示的內容卻不是我想要的。 那是因為?Android SDK提供的預定義布局資源(android.R.layout.simple_list_item_1)布局如下: ~~~ <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/text1" style="?android:attr/listItemFirstLineStyle" android:paddingTop="2dip" android:paddingBottom="3dip" android:layout_width="match_parent" android:layout_height="wrap_content" > </TextView> ~~~ 這樣在ListView被實例化后與adapter會話時,ArrayAdapter<Day>.getView()方法會調用Day對象的toString()方法,然后將返回值傳遞給TextView。 所以覆蓋Day對象toString()方法: Day.java ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ~~~ package com.example.showdays; import java.util.ArrayList; public class Day { private String mTitle; public String getTitle() { return mTitle; } public void setTitle(String mTitle) { this.mTitle = mTitle; } @Override public String toString() { return mTitle; } } ~~~ 此時再運行程序,運行效果如下圖: ![](https://box.kancloud.cn/2016-02-17_56c4396bc39f2.jpg) 4、自定義列表項 上面使用的是Android SDK提供的預定義布局資源,直接把數據放置在TextView組件中來顯示。 下面我就自定義一個列表項布局,將要顯示的信息用Button組件來顯示,布局如下: my_list_item.xml ? ? ? ? ? ? ? ? ? ?? ~~~ <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button" android:layout_width="match_parent" android:layout_height="wrap_content" android:enabled="false" > </Button> ~~~ 因為ListView更新視圖的時候都要調用ArrayAdapter<Day>.getView()方法來獲取View。所以要想把自己定義的列表項加入到ListView中,可以重寫getView()方法,覆蓋它并返回一個自己定義的View。做出改變如下: DayListFragment.java ? ? ? ? ? ? ~~~ package com.example.showdays; import java.util.ArrayList; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; public class DayListFragment extends ListFragment { private ArrayList<Day> days; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DayLab dayLab = new DayLab(); this.days = dayLab.getDays(); DayAdapter adapter = new DayAdapter(days); setListAdapter(adapter); } private class DayAdapter extends ArrayAdapter<Day> { public DayAdapter(ArrayList<Day> days) { super(getActivity(), 0, days); } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { // 此列表項是否存在,不存在則創建一個 convertView = getActivity().getLayoutInflater().inflate( R.layout.my_list_item, null); } Day day = getItem(position); // 獲取當前位置的Day對象 Button button = (Button) convertView.findViewById(R.id.button); button.setText(day.toString()); return convertView; } } } ~~~ 最后運行一下,運行效果如下圖: ![](https://box.kancloud.cn/2016-02-17_56c4396bd70f4.jpg) `#DONE#`
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看