• <em id="6vhwh"><rt id="6vhwh"></rt></em>

    <style id="6vhwh"></style>

    <style id="6vhwh"></style>
    1. <style id="6vhwh"></style>
        <sub id="6vhwh"><p id="6vhwh"></p></sub>
        <p id="6vhwh"></p>
          1. 国产亚洲欧洲av综合一区二区三区 ,色爱综合另类图片av,亚洲av免费成人在线,久久热在线视频精品视频,成在人线av无码免费,国产精品一区二区久久毛片,亚洲精品成人片在线观看精品字幕 ,久久亚洲精品成人av秋霞

            expandablelistview

            更新時間:2023-03-02 08:06:45 閱讀: 評論:0

            閱讀五分鐘,每日十點,和您一起終身學習,這里是程序員Android

            本篇文章主要介紹 Android 開發(fā)中的部分知識點,通過閱讀本篇文章,您將收獲以下內容:

            ListView主要使用方法使用android:entries 為ListView準備數(shù)據(jù)使用List 為ListView 準備數(shù)據(jù)為ListView 添加頭,尾,以及空布局使用SimpleAdapter 為Listview 適配圖文使用BaAdapter 為Listview適配圖文ListView 分類顯示

            ListView 是Android中顯示數(shù)據(jù)常用的控件之一,主要用于顯示一個垂直滾動的數(shù)據(jù)集合,隨著Android 手機對性能要求越來越高,一個更現(xiàn)代,更靈活,顯示列表性能更優(yōu)異的RecyclerView將會逐漸取代ListView的數(shù)據(jù)顯示方式,但是目前為止,ListView在開發(fā)中還是十分常見的,并未被棄用。

            ListView 簡介

            ListView 繼承關系如下:

            java.lang.Object

            ? android.view.View

            ? android.view.ViewGroup

            ? android.widget.AdapterView<android.widget.ListAdapter>

            ? android.widget.AbsListView

            ? android.widget.ListView

            ListView 常用XML屬性

            ListView XML常用屬性如下:

            android:dividerandroid:dividerHeightandroid:entriesandroid:footerDividersEnabledandroid:headerDividersEnabled1.ListView主要使用方法如下:

            ListView 常用來顯示同分類數(shù)據(jù),常用使用方法如下:

            1. 準備數(shù)據(jù)源

            List mAddHeaderFooterList = new ArrayList<String>();

            2.將數(shù)據(jù)源添加到適配器中

            ArrayAdapter adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mAddHeaderFooterList);

            3. 將適配器中的數(shù)據(jù)添加到ListView 中

            mListView.tAdapter(adapter);

            2. 使用android:entries 為ListView準備數(shù)據(jù)實現(xiàn)效果如下

            android:entries

            實現(xiàn)代碼如下在Listview標簽中直接用數(shù)組為ListView填充數(shù)據(jù)entries 屬性使用方法:

            <ListView android:id="@+id/lv_entries" android:layout_width="match_parent" android:layout_height="match_parent" android:divider="@android:color/darker_gray" android:dividerHeight="2dp" android:visibility="gone" android:entries="@array/citys" />填充數(shù)據(jù)如下array 數(shù)組資源

            <string-array name="citys">

            <item>北京</item>

            <item>上海</item>

            <item>廣州</item>

            <item>深圳</item>

            <item>鄭州</item>

            <item>成都</item>

            </string-array>

            3. 使用List 為ListView 準備數(shù)據(jù)實現(xiàn)效果如下

            ListView

            部分實現(xiàn)代碼如下:

            public void ListViewArrayList(View view) {

            ClearAllView();

            mListViewArray.tVisibility(View.VISIBLE);

            // 1.準備數(shù)據(jù)源

            final String[] citys = getResources().getStringArray(R.array.citys);

            // 2.將數(shù)據(jù)源加載到適配器中

            // ArrayAdapter adapter = new ArrayAdapter<String>(ListViewMethods.this,

            // android.R.layout.simple_expandable_list_item_1, citys);

            // 3.將適配器中的數(shù)據(jù)加載到ListView控件中

            mArrayList = Arrays.asList(citys);

            ArrayAdapter adapter = new ArrayAdapter<String>(ListViewMethods.this,

            android.R.layout.simple_expandable_list_item_1, mArrayList);

            mListViewArray.tAdapter(adapter);

            }

            4. 為ListView 添加頭,尾,以及空布局實現(xiàn)效果如下

            ListView添加頭 尾 空布局

            主要方法如下:

            1. 添加頭布局方法

            ListView.addHeaderView(View)

            2.添加尾布局方法

            ListView.addFooterView(View)

            3. ListView數(shù)據(jù)為空時, 設置空布局方法

            ListView.tEmptyView(View)

            效果圖實現(xiàn)代碼如下

            public void ListViewHAddHeaderFooter(View view) { ClearAllView(); mListAddHeadFooter.tVisibility(View.VISIBLE); // 準備數(shù)據(jù)源 mAddHeaderFooterList = new ArrayList<String>(); for (int i = 0; i < 6; i++) { mAddHeaderFooterList.add("測試" + i); } // 將數(shù)據(jù)源添加到適配器中 final ArrayAdapter adapter = new ArrayAdapter<String>( ListViewMethods.this, android.R.layout.simple_list_item_1, mAddHeaderFooterList); // 添加listview 頭 imageHeader = new ImageView(this); imageHeader.tLayoutParams(new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); imageHeader.tImageResource(R.drawable.gril); imageHeader.tOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int index = mAddHeaderFooterList.size(); for (int i = index; i < index + 20; i++) { mAddHeaderFooterList.add("加載更多數(shù)據(jù)內容" + i); } adapter.notifyDataSetChanged(); } }); mListAddHeadFooter.addHeaderView(imageHeader); // 添加listview 尾 btnFooter = new Button(this); btnFooter.tLayoutParams(new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); btnFooter.tText("點擊加載更多"); btnFooter.tOnClickListener(new View.OnClickListener() { public void onClick(View v) { int index = mAddHeaderFooterList.size(); for (int i = index; i < index + 20; i++) { mAddHeaderFooterList.add("加載更多" + i); } adapter.notifyDataSetChanged(); } }); mListAddHeadFooter.addFooterView(btnFooter); TextView tv = new TextView(this); tv.tLayoutParams(new AbsListView.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); tv.tText("數(shù)據(jù)為空"); mListAddHeadFooter.tEmptyView(tv); // 將適配器中的數(shù)據(jù)添加到ListView 中 mListAddHeadFooter.tAdapter(adapter); }5. 使用SimpleAdapter 為Listview 適配圖文實現(xiàn)效果如下

            SimpleAdapter

            實現(xiàn)代碼如下

            public void ListViewSimpleAdapter(View view) { ClearAllView(); mListViewSimple.tVisibility(View.VISIBLE); int[] images = { R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, }; mSimpleList = new ArrayList<Object>(); // 準備數(shù)據(jù) for (int i = 0; i < images.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("img", images[i]); map.put("text", "item" + i); mSimpleList.add(map); } /** * 將數(shù)據(jù)源的數(shù)據(jù)加載到適配器中 SimpleAdapter context: 上下文對象 data:表示加載到適配器中的數(shù)據(jù)對象 * resource: 表示adapter控件中每項資源id from:表示數(shù)據(jù)源map 中key 的數(shù)組,表示key指定的值 * to:表示需要展示對應數(shù)據(jù)的控件資源id * * 通過from 和to的對應,將from 中key值對應的數(shù)據(jù)指定的顯示到to 指定資源id的控件中 * * **/ SimpleAdapter adapter = new SimpleAdapter(ListViewMethods.this, mSimpleList, R.layout.listview_item_img_tv, new String[] { "img", "text" }, new int[] { R.id.img, R.id.tv }); // 將適配器中的數(shù)據(jù)添加到控件中 mListViewSimple.tAdapter(adapter); }使用的item 布局如下

            <?xml version="1.0" encoding="utf-8"?>

            <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

            android:layout_width="match_parent"

            android:layout_height="match_parent"

            android:orientation="horizontal">

            <ImageView

            android:id="@+id/img"

            android:layout_width="wrap_content"

            android:layout_height="match_parent"

            android:layout_margin="5dp"

            android:gravity="center_vertical"

            android:src="@drawable/ic_launcher" />

            <TextView

            android:id="@+id/tv"

            android:layout_width="wrap_content"

            android:layout_height="match_parent"

            android:layout_margin="5dp"

            android:textColor="@android:color/darker_gray"

            android:text="test"

            android:gravity="center_vertical"

            android:textSize="25sp" />

            </LinearLayout>

            6. 使用BaAdapter 為Listview適配圖文實現(xiàn)效果如下

            BaAdapter

            -實現(xiàn)代碼如下

            public void ListViewBaAdapter(View view) {

            ClearAllView();

            mListViewBa.tVisibility(View.VISIBLE);

            mBaAdapterList = new ArrayList<Map<String, Object>>();

            int[] images = { R.drawable.gril, R.drawable.ic_launcher,

            R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril,

            R.drawable.ic_launcher, R.drawable.gril,

            R.drawable.ic_launcher, R.drawable.gril, };

            for (int i = 0; i < images.length; i++) {

            Map<String, Object> map = new HashMap<String, Object>();

            map.put("img", images[i]);

            map.put("text", "數(shù)據(jù)" + i);

            mBaAdapterList.add(map);

            }

            MyBaAdapter adapter = new MyBaAdapter();

            mListViewBa.tAdapter(adapter);

            }

            自定義適配器實現(xiàn)的方法

            class MyBaAdapter extends BaAdapter {

            // 當前適配器中加載數(shù)據(jù)的總條目

            @Override

            public int getCount() {

            return mBaAdapterList.size();

            }

            // 根據(jù)指定下標獲取對應item 的view

            @Override

            public Object getItem(int position) {

            return mBaAdapterList.get(position);

            }

            // 根據(jù)指定下標獲取當前item的id

            @Override

            public long getItemId(int position) {

            return position;

            }

            /**

            * 獲取適配器控件中的View對象,得到用于展示數(shù)據(jù)的視圖 int position,:當前item的下標 View convertView,

            * 表示可復用的View ViewGroup parent 當前繪制的item 所屬的listview

            */

            @Override

            public View getView(int position, View convertView, ViewGroup parent) {

            // 表示第一次運行創(chuàng)建,否則復用view

            if (convertView == null) {

            convertView = LayoutInflater.from(ListViewMethods.this)

            .inflate(R.layout.listview_item_img_tv, null);

            mHolder = new Holder();

            mHolder.tv = (TextView) convertView.findViewById(R.id.tv);

            mHolder.img = (ImageView) convertView.findViewById(R.id.img);

            convertView.tTag(mHolder);

            } el {

            // 進行復用

            mHolder = (Holder) convertView.getTag();

            }

            mHolder.tv.tText((String) mBaAdapterList.get(position).get(

            "text"));

            mHolder.img.tImageResource((Integer) mBaAdapterList.get(

            position).get("img"));

            return convertView;

            }

            }

            class Holder {

            public TextView tv;

            public ImageView img;

            }

            使用的item 布局如下

            <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="5dp" android:gravity="center_vertical" android:src="@drawable/ic_launcher" /> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_margin="5dp" android:textColor="@android:color/darker_gray" android:text="test" android:gravity="center_vertical" android:textSize="25sp" /></LinearLayout>7. ListView 分類顯示實現(xiàn)效果如下:

            ListView 分類顯示

            實現(xiàn)代碼如下:

            public void ListViewTypeBaAdapter(View view) { ClearAllView(); mListViewType.tVisibility(View.VISIBLE); MyTypeBaAdapter myTypeBaAdapter = new MyTypeBaAdapter(); mListViewType.tAdapter(myTypeBaAdapter); } class MyTypeBaAdapter extends BaAdapter { private String[] tittles = { "分類一 :水果", "分類二 :蔬菜" }; private String[] mTypeOneList = { "蘋果", "香蕉", "梨", "西瓜", "菠蘿" }; private String[] mTypeTwoList = { "番茄", "土豆", "大蔥", "辣椒", "蓮藕", "白菜", "蘿卜", "豆角", "芹菜", "茄子" }; int[] typeOneImages = { R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril }; int[] typeTwoImages = { R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril, R.drawable.ic_launcher, R.drawable.gril }; @Override public int getCount() { return mTypeOneList.length + mTypeTwoList.length + 2; } @Override public Object getItem(int position) { if (position == 0 || position == mTypeOneList.length + 1) { return 0; } el { if (position < mTypeOneList.length + 1) { return mTypeOneList[position]; } el { return mTypeTwoList[position - mTypeOneList.length - 2]; } } } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { int mode = getItemViewType(position); if (mode == 0) { ViewTitleHolder holder = null; if (convertView == null) { convertView = View.inflate(getApplicationContext(), R.layout.listview_type_tv, null); holder = new ViewTitleHolder(); holder.textView = (TextView) convertView .findViewById(R.id.tv); convertView.tTag(holder); } el { holder = (ViewTitleHolder) convertView.getTag(); } if (position == 0) { holder.textView.tText(tittles[position]); } el { holder.textView.tText(tittles[1]); } return convertView; } el { ViewHolder holder = null; if (convertView == null) { convertView = View.inflate(getApplicationContext(), R.layout.listview_item_img_tv, null); holder = new ViewHolder(); holder.imageView = (ImageView) convertView .findViewById(R.id.img); holder.textView = (TextView) convertView .findViewById(R.id.tv); convertView.tTag(holder); } el { holder = (ViewHolder) convertView.getTag(); } if (position < mTypeOneList.length + 1) { holder.textView.tText(mTypeOneList[position - 1]); holder.imageView .tImageResource(typeOneImages[position - 1]); } el { holder.textView.tText(mTypeTwoList[position - mTypeOneList.length - 2]); holder.imageView.tImageResource(typeTwoImages[position - mTypeOneList.length - 2]); } return convertView; } } @Override public int getItemViewType(int position) { if (position == 0 || position == mTypeOneList.length + 1) { return 0; } el { return 1; } } @Override public int getViewTypeCount() { return super.getViewTypeCount() + 1; } } static class ViewHolder { ImageView imageView; TextView textView; } static class ViewTitleHolder { TextView textView; }使用的item 布局如下

            <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <TextView android:id="@+id/tv" android:background="@android:color/darker_gray" android:padding="5dp" android:paddingLeft="10dp" android:textSize="16sp" android:textColor="@android:color/white" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>

            友情推薦:

            Android 干貨分享

            至此,本篇已結束,如有不對的地方,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!

            本文發(fā)布于:2023-02-28 21:00:00,感謝您對本站的認可!

            本文鏈接:http://www.newhan.cn/zhishi/a/167771560596246.html

            版權聲明:本站內容均來自互聯(lián)網(wǎng),僅供演示用,請勿用于商業(yè)和其他非法用途。如果侵犯了您的權益請與我們聯(lián)系,我們將在24小時內刪除。

            本文word下載地址:expandablelistview.doc

            本文 PDF 下載地址:expandablelistview.pdf

            相關文章
            留言與評論(共有 0 條評論)
               
            驗證碼:
            Copyright ?2019-2022 Comsenz Inc.Powered by ? 實用文體寫作網(wǎng)旗下知識大全大全欄目是一個全百科類寶庫! 優(yōu)秀范文|法律文書|專利查詢|
            主站蜘蛛池模板: 国产欧美日韩视频怡春院| 国产熟女精品一区二区三区| 国内精品卡一卡二卡三| 国产熟睡乱子伦午夜视频| 亚洲性日韩一区二区三区| 91亚洲人成手机在线观看| 国产精品乱子伦xxxx| 网友自拍视频一区二区三区| 姐姐6电视剧在线观看| 亚洲国产AⅤ精品一区二区不卡 | 无码内射中文字幕岛国片| 97成人午夜精品长长久久| 宅男噜噜噜66在线观看| 三年片在线观看免费观看大全下载| 青青在线视频一区二区三区| 国产精品久久久久影院色| 亚洲国产精品乱码一区二区| 久久综合开心激情五月天| 99久久精品午夜一区二区| 黄色a一级视频| 国产明星精品无码AV换脸| 久久精品无码专区免费青青| 国产精品视频午夜福利| 国产精品免费中文字幕| AV在线不卡观看免费观看| 性姿势真人免费视频放| 国产精品熟女一区二区不卡| av小次郎网站| 黄色网站免费在线观看| 亚洲欧美中文日韩V在线观看| 亚洲VA欧美VA国产综合| 国产小嫩模无套中出视频| 欧美日韩中文字幕二区三区| 国产精品内射在线免费看| 中文字幕在线国产精品| 国产精品二区中文字幕| 中文字幕日韩精品人妻| 国产在线中文字幕精品| 亚洲精品韩国一区二区| 乱色熟女综合一区二区| 国产午夜精品理论大片 |