注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

BaseAdapter  

2010-05-15 11:21:16|  分类: 数据适配器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
android.widget.BaseAdapter
public abstract class BaseAdapter extends Object implements ListAdapter SpinnerAdapter
注意是虚类哦
Known Direct Subclasses
ArrayAdapter<T>, CursorAdapter, SimpleAdapter 
Known Indirect Subclasses
ResourceCursorAdapter, SimpleCursorAdapter

Class Overview

Common base class of common implementation for an Adapter that can be used in both ListView 
(by implementing the specialized ListAdapter interface} 
and Spinner (by implementing the specialized SpinnerAdapter interface.
使用BaseAdapter时必须实现它的四个方法:
public View        getView(int position, View  convertView, ViewGroup  parent)

abstract int        getCount()
    How many items are in the data set represented by this Adapter.
abstract Object     getItem(int position)
    Get the data item associated with the specified position in the data set.
abstract long     getItemId(int position)
    Get the row id associated with the specified position in the list.
例子1:
//实现了一个数组适配器
import java.util.List;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.ListView;
import android.content.Context;
import android.os.Handler;
import android.view.LayoutInflater;
import android.widget.BaseAdapter;
public class HelloList extends ListActivity{    
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main3);        
        List<String> items = fillArray();        
        MyBaseAdapter<String> adapter = new MyBaseAdapter<String>(this,R.layout.list_row,items);              
        this.setListAdapter(adapter);
    }
    private List<String> fillArray(){
        List<String> items = new ArrayList<String>();
        items.add("1");
        items.add("2");
        items.add("3");
        items.add("4");
        items.add("5");
        items.add("6");
        items.add("7");
        return items;
    }
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id)
    {
        TextView txt = (TextView)this.findViewById(R.id.text);
        txt.setText("selected"+l.getSelectedItem().toString()+"!");
    }
}
class MyBaseAdapter<T> extends BaseAdapter
{
    Context  context=null;
    List<T> list;
    int textViewResourceId;
    MyBaseAdapter(Context  context,int textViewResourceId,List<T>  objects)
    {
        super();
        this.context=context;
        this.textViewResourceId=textViewResourceId;
        list=objects;
    }
    //必须实现
     public View        getView(int position, View  convertView, ViewGroup  parent)
     {
         TextView v =null;
           
           if(convertView==null){
               LayoutInflater vi = null;
               vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
               v =(TextView)vi.inflate(R.layout.list_row, parent, false);
               //v =(TextView)vi.inflate(textViewResourceId,null);
           }
           else{
               v = (TextView)convertView;
           }
               v.setText((String)this.getItem(position));
           return v;
     }
     //必须实现
     public int getCount() {
         return list.size();
         
     }
    //必须实现
    @Override
    public T getItem(int position) {
        // TODO Auto-generated method stub
        return list.get(position);
    }
    //必须实现
    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }
}
例子2:
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.sec.android.touchwiz.samples.R;

/**
 * BasicSampleColorTable shows Samsung ColorTable.<br>
 * You can see the color of each item in ColorTable with this list view.
 * 
 * @author cooldawn.kim
 */
public class BasicSampleColorTable extends Activity{
    
    private ListView mListView;
    private ColorTableAdapter mAdapter;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle("TouchWiz 3.0 Jupiter ColorTable");
        
        mListView = new ListView(this);
        mAdapter = new ColorTableAdapter(this);
        
        mListView.setAdapter(mAdapter);
        mListView.setItemsCanFocus(false);
        
        setContentView(mListView);
    }
    
    /**
     * Adapter for ColorTable list
     */
    final class ColorTableAdapter extends BaseAdapter {
        Context mContext;
        Resources mResources;

        public ColorTableAdapter(Context context) {
            mContext = context;
            mResources = context.getResources();
        }

        public int getCount() {
            return touchwiz.R.color.tw_color149 - touchwiz.R.color.tw_color001 + 1;
        }

        public String getItem(int position) {
            return String.format("android.R.color.twcolor%03d", position + 1); // TODO
                                                                                // CHECK;
                                                                                // on
                                                                                // SDK
        }

        public long getItemId(int position) {
            return position;
        }

        /**
         * return ListItemView for ColorListAdapter
         */
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView itemView = (TextView) ((convertView instanceof TextView) ? convertView
                    : null);
            if (itemView == null) {
                itemView = new TextView(mContext);
            }

            // ///////////////////////////////////////////////////////////////////////////
            // Set Background Color using Tw Color Resource
            // from touchwiz.R.color.tw_color001 ~ touchwiz.R.color.tw_color100

            // To set Color using Resource id,
            // use setXXXXResource() function
            itemView.setBackgroundResource(touchwiz.R.color.tw_color001 + position);

            // setXXXXColor() functions uses 4byte AARRGGBB values
            int color = mResources.getColor(touchwiz.R.color.tw_color001 + position);
            itemView.setTextColor(color ^ 0x00808080);
            String idx = "00" + String.valueOf(position + 1);
            itemView.setText("tw_color"
                    + idx.substring(idx.length() - 3) + "    ("
                    + String.valueOf((color >> 16) & 0xff) + ","
                    + String.valueOf((color >> 8) & 0xff) + ","
                    + String.valueOf(color & 0xff) + ")");
            
            itemView.setMinHeight(50);
            itemView.setGravity(Gravity.CENTER_VERTICAL);
            itemView.setPadding(8, 0, 0, 0);

            // ///////////////////////////////////////////////////////////////////////////

            return itemView;
        }
    }
}
  评论这张
 
阅读(2223)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017