1. 程式人生 > >打造萬能的ListView GridView 介面卡

打造萬能的ListView GridView 介面卡


1、概述

相信做Android開發的寫得最多的就是ListView,GridView的介面卡吧,記得以前開發一同事開發專案,一個專案下來基本就一直在寫ListView的Adapter都快吐了~~~對於Adapter一般都繼承BaseAdapter複寫幾個方法,getView裡面使用ViewHolder模式,其實大部分的程式碼基本都是類似的。

本篇部落格為快速開發系列的第一篇,將一步一步帶您封裝出一個通用的Adapter。

2、常見的例子

首先看一個最常見的案例,大家一目十行的掃一眼

1、佈局檔案

主佈局檔案:

[html]
  view plain  copy
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"
      
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <ListView  
  7.         android:id="@+id/id_lv_main"  
  8.         android:layout_width
    ="fill_parent"  
  9.         android:layout_height="fill_parent" />  
  10.   
  11. </RelativeLayout>  

Item的佈局檔案:

[html]  view plain  copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:id="@+id/id_tv_title"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="50dp"  
  6.     android:background="#aa111111"  
  7.     android:gravity="center_vertical"  
  8.     android:paddingLeft="15dp"  
  9.     android:textColor="#ffffff"  
  10.     android:text="hello"  
  11.     android:textSize="20sp"  
  12.     android:textStyle="bold" >  
  13.   
  14. </TextView>  

2、Adapter

[java]  view plain  copy
  1. package com.example.zhy_baseadapterhelper;  
  2.   
  3. import java.util.List;  
  4.   
  5. import android.content.Context;  
  6. import android.view.LayoutInflater;  
  7. import android.view.View;  
  8. import android.view.ViewGroup;  
  9. import android.widget.BaseAdapter;  
  10. import android.widget.TextView;  
  11.   
  12. public class MyAdapter extends BaseAdapter  
  13. {  
  14.     private LayoutInflater mInflater;  
  15.     private Context mContext;  
  16.     private List<String> mDatas;  
  17.   
  18.     public MyAdapter(Context context, List<String> mDatas)  
  19.     {  
  20.         mInflater = LayoutInflater.from(context);  
  21.         this.mContext = context;  
  22.         this.mDatas = mDatas;  
  23.     }  
  24.   
  25.     @Override  
  26.     public int getCount()  
  27.     {  
  28.         return mDatas.size();  
  29.     }  
  30.   
  31.     @Override  
  32.     public Object getItem(int position)  
  33.     {  
  34.         return mDatas.get(position);  
  35.     }  
  36.   
  37.     @Override  
  38.     public long getItemId(int position)  
  39.     {  
  40.         return position;  
  41.     }  
  42.   
  43.     @Override  
  44.     public View getView(int position, View convertView, ViewGroup parent)  
  45.     {  
  46.         ViewHolder viewHolder = null;  
  47.         if (convertView == null)  
  48.         {  
  49.             convertView = mInflater.inflate(R.layout.item_single_str, parent,  
  50.                     false);  
  51.             viewHolder = new ViewHolder();  
  52.             viewHolder.mTextView = (TextView) convertView  
  53.                     .findViewById(R.id.id_tv_title);  
  54.             convertView.setTag(viewHolder);  
  55.         } else  
  56.         {  
  57.             viewHolder = (ViewHolder) convertView.getTag();  
  58.         }  
  59.         viewHolder.mTextView.setText(mDatas.get(position));  
  60.         return convertView;  
  61.     }  
  62.   
  63.     private final class ViewHolder  
  64.     {  
  65.         TextView mTextView;  
  66.     }  
  67.   
  68. }  

3、Activity

[java]  view plain  copy
  1. package com.example.zhy_baseadapterhelper;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.Arrays;  
  5. import java.util.List;  
  6.   
  7. import android.app.Activity;  
  8. import android.os.Bundle;  
  9. import android.widget.ListView;  
  10.   
  11. 相關推薦

    打造萬能ListView GridView 介面卡

    1、概述 相信做Android開發的寫得最多的就是ListView,GridView的介面卡吧,記得以前開發一同事開發專案,一個專案下來基本就一直在寫ListView的Adapter都快吐了~~~對於Adapter一般都繼承BaseAdapter複寫幾個方法,getView裡面使用

    打造萬能Adapter(介面卡)——適用於ListView、GridListView

    整理總結自鴻洋的部落格:http://blog.csdn.net/lmj623565791/article/details/38902805/ 一、利用普通的Adapter實現ListView列表——這是最基礎的介面卡 以下程式碼是最普通的實現方法: 1、MainActi

    Android高手進階教程(十六)之---Android中萬能的BaseAdapter(Spinner,ListView,GridView)的使用!

    private idt save idv -- imp drawable android中 welcome 大家好!今天給大家講解一下BaseAdapter(基礎適配器)的用法,適配器的作用主要是用來給諸如(Spinner,ListView,GridView)來填充數據的。

    打造通用的Android下拉重新整理元件 適用於ListView GridView等各類View

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    Android打造 ListView GridView等 通用的下拉重新整理 上拉自動載入的元件

    分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

    為RecyclerView打造萬能介面卡,點選事件,5.0水波紋點選效果

    一.前言 最近使用到RecyclerView,RecyclerView使用詳解戳這裡,由於使用過張鴻洋大神的ListView萬能Adapter,感覺RecyclerView的Adapter編寫還是太麻煩了,而且沒有點選事件,ok,參考ListView的萬能Ad

    重寫listview/gridview 的onMeasure方法,解決與ScrollView的沖突問題

    wid 沖突 integer max resp ide @override 固定 width 自定義類繼承listview/gridview 註意item中控件的高要設為固定值 @Overridepublic void onMeasure(int widthMeasure

    Path特效之PathMeasure打造萬能路徑動效

    rep flag fill pub tin 我們 set mcu ext 前面兩篇文章主要講解了 Path 的概念和基本使用,今天我們一起利用 Path 做個比較實用的小例子; 上一篇我們使用 Path 繪制了一個小桃心,我們這一篇繼續圍繞著這個小桃心進行展開:

    背水一戰 Windows 10 (58) - 控件(集合類): ListViewBase - ListView, GridView

    aml dpa net sealed em1 .net http per tran [源碼下載] 背水一戰 Windows 10 (58) - 控件(集合類): ListViewBase - ListView, GridView 作者:webabcd介紹背水一戰 Win

    Android基礎——快速開發之打造萬能適配器

    臃腫 log 思想 代碼分析 htm 考試報名 做了 順序 基礎 這裏以ListView作演示,對於ListView我們再熟悉不過了,其步驟分為: 創建ListView的Bean對象 創建ListView的Adapter的ItemView布局 創建ListView的Ada

    flutter的對齊控制元件,拓展空間,listview,gridview控制元件使用

    1.使用mainAxisAlignment和crossAxisAlignment屬性來控制行或列如何對齊其子控制元件。對於行,主軸水平執行,橫軸垂直執行。對於列,主軸垂直執行,橫軸水平執行。 2.在頁面展示的時候經常出現螢幕展示不全,這時候就會在螢幕上出現斜線框子。這樣的解決方法一是使用l

    Android使用Fragment打造萬能頁面切換框架(

    首先我們來回憶一下傳統用Activity進行的頁面切換,activity之間切換,首先需要新建intent物件,給該物件設定一些必須的引數,然後呼叫startActivity方法進行頁面跳轉。如果需要activity返回結果,則呼叫startActivityForResult方法,在onActivi

    flutter的對齊控制元件,拓展空間,listview,gridview空間使用

    1.使用mainAxisAlignment和crossAxisAlignment屬性來控制行或列如何對齊其子控制元件。對於行,主軸水平執行,橫軸垂直執行。對於列,主軸垂直執行,橫軸水平執行。 2.在頁面展示的時候經常出現螢幕展示不全,這時候就會在螢幕上出現斜線

    Android PullToRefresh ListView GridView 下拉重新整理 使用詳解

                    轉載請標明出處:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:【張鴻洋的部落格】群裡一哥們今天聊天偶然提到這個git hub上的控制元件:pull-to-refresh ,有興趣的看下,例子中的功

    Android TV 開發-listview(GridView)使用鍵盤獲取焦點時,選中上次失去焦點時的item,而不是就近的item

    在電視上開發Android應用時,經常要做有二級選單的應用,例如: 但當我們按左鍵的時候,左邊listview的最近的item會被選中,即如下效果: 但是在電視上開發應用的時候,我們希望是上一次被選中的item重新被選中,即希望是“日期和時間”被重新選中。 為了實現這個

    OkHttp網路獲取資料通過RecycleView展示,實現ListView,GridView(網格佈局),瀑布流效果展示

    因為涉及到網路請求資料 那麼首先我們先要在清單檔案 新增網路許可權,已經註冊MyApp(設定圖片的自定義類,需要註冊) <uses-permission android:name="android.permission.INTERNET"/>

    安卓開發-ListView介面卡和監聽器/ExpandableListView的使用

    《一:BaseAdapter的簡單使用》 1.定義類MyAdapter,繼承BaseAdapter: public class MyAdapter extends BaseAdapter { //將佈局檔案轉換成View物件 priv

    列表控制元件ListView介面卡Adapter

    學習筆記 一個ListView通常有兩個職責: (1)將資料填充到佈局 (2)處理使用者的選擇點選等操作 一個ListView建立需要3個元素: (1)ListView中每一列的View;(2)填入View的資料或圖片等;(3)連結資料與ListView的介面卡。 介面卡

    ListView介面卡和Holder的封裝

    1未封裝標準寫法 MyAdapter.java class MyAdapter extends BaseAdapter { private ArrayList dat

    Android5.x:RecycleView(一):實現ListView + GridView + StaggeredGridLayou效果

    1 RecycleView實現ListView的功能 需要新增依賴: compile 'com.android.support:recyclerview-v7:24.2.0' 相關方法: RecyclerView的方法: