zoukankan      html  css  js  c++  java
  • 【原创】Android自定义适配器的使用方法

    比如说我们已经得到了数据,想在一个listview或者在其他的控件中显示的,并且我们显示想要自己设计样式来显示的话就要用到自定义适配器了,下面让我们结合代码讲一下具体的使用方法:

    代码会有注释的哦:

     截取的一段得取数据的代码(实例按照读者自己写的代码而定)

     1 private void selectSpinner(String title,String linNum){
     2          int i = 1 ;
     3          AppMainRoadInfoTab appMainRoadInfoTab = (AppMainRoadInfoTab) getActivity();
     4          SQLiteDatabase db = appMainRoadInfoTab.getDbHelper().getReadableDatabase();
     5           Cursor c = db.rawQuery("select * from tb_Stations inner join tb_carinfo on tb_Stations.LineID = tb_carinfo.LineID where tb_carinfo.Title ='"+title+"' and tb_carinfo.LineNum='"+linNum+"'", null);
     6           List<String> items = new ArrayList<String>();
     7           while(c.moveToNext()){
     8                  String name= i +"."+c.getString(c.getColumnIndex("StationName"));
     9                  String booble = c.getString(c.getColumnIndex("IsStop"));
    10                  if(booble.equals("false")){
    11                  name= null;
    12                  continue;
    13                 }else{
    14                  items.add(name);
    15                }
    16         i++;
    17     }
    18           NewBaseAdapter adapter=new NewBaseAdapter(this.getActivity(), items, R.layout.bus_listview_item);
    19           listView.setAdapter(adapter);
    20     }

     第一:比如说我们上述得到了一个String 类型的一个l组ist数据想让这个组数据按照我们心中的样式展现出来,展现出来的话我们就要新建一个xml文件存放你写的控件,还有你自己配置的属性,下面给大家简单的贴一下我写的xml文件代码:listitem.xml

    <?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="vertical" >
        
        <TextView 
          android:id="@+id/myListData"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" 
          android:gravity="left"
          android:textSize="20sp"
          android:textColor="#C1FFC1"
            />
    </LinearLayout>

          第二:我们就要新建我们的自定义设配器了代码如下:

      

     1 package com.iflytek.adapter;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 import com.iflytek.iflytekbus.R;
     7 import android.content.Context;
     8 import android.view.LayoutInflater;
     9 import android.view.View;
    10 import android.view.ViewGroup;
    11 import android.widget.BaseAdapter;
    12 import android.widget.TextView;
    13 
    14 public class NewBaseAdapter extends BaseAdapter{
    15 
    16     private Context context;
    17     private ArrayList<String> list;
    18     private int resource;
    19     private LayoutInflater inflater;
    20     public NewBaseAdapter(Context context,List<String> items ,int resource) {
    21         // TODO Auto-generated constructor stub
    22         this.context=context;
    23         this.inflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    24         this.list=(ArrayList<String>) items;
    25         this.resource=resource;
    26     }
    27 private class ViewHolder{
    28         private TextView txtView;
    29     }
    30     @Override
    31     public int getCount() {//返回list的所有数量
    32         // TODO Auto-generated method stub
    33         return list.size();
    34     }
    35 
    36     @Override
    37     public Object getItem(int arg0) {//当前的一个对象
    38         // TODO Auto-generated method stub
    39         return list.get(arg0);
    40     }
    41 
    42     @Override
    43     public long getItemId(int arg0) {//当前对象的一个索引
    44         // TODO Auto-generated method stub
    45         return arg0;
    46     }
    47 
    48     @Override
    49     public View getView(int position, View convertView, ViewGroup parent) {
    50         // TODO Auto-generated method stub
    51         ViewHolder holder=new ViewHolder();
    52         if(convertView==null){
    53             String  string=list.get(position).toString();
    54             convertView=inflater.inflate(resource, null);
    55             holder.txtView=(TextView)convertView.findViewById(R.id.myListData);
    56             holder.txtView.setText(string);
    57         }
    58         else {
    59             holder=(ViewHolder)convertView.getTag();
    60         }
    61         return convertView;
    62     }
    63     
    64 }

    以上是自定义设配器,在代码中55行就是引用上面的样式布局文件,在界面上显示的效果也就是自己在这个布局文件显示的效果

     

     

    注意啦:设配器虽然设置好了,我们要引用啊:看第一帖代码的18和19行,里面的参数之一要对应你设置的参数。

     

    不懂的可以留言...一一解释。

  • 相关阅读:
    物联网需要自己的专有操作系统
    基于visual Studio2013解决C语言竞赛题之0201温度转换
    基于visual Studio2013解决C语言竞赛题之前言
    物联网操作系统再思考:建设更加主动的网络,面向连接一切的时代
    经典排序算法分析和代码-下篇
    Windows XP硬盘安装Ubuntu 12.04双系统图文详解
    Eclipse 编码区-保护色-快捷大全
    Android最新源码4.3下载-教程 2013-11
    Windows XP硬盘安装Ubuntu 12.04双系统图文详解
    惠威的M200MK3的前级电子分频板
  • 原文地址:https://www.cnblogs.com/wangmars/p/3247049.html
Copyright © 2011-2022 走看看