ArrayAdapter和BaseAdapter实现同一功能中的差异?

package cn.sharpeha.pipishare;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.TextView;
import android.widget.Toast;

import java.util.List;

class dateString {

    private String Year;
    private String Month;


    public dateString(String Year,String Month){
        this.Year=Year;
        this.Month=Month;
    }

    public String getYear(){
        return Year;
    }

    public String getMonth(){
        return Month;
    }
}



public class dateArray extends ArrayAdapter<dateString>{

    private int resourceID;
    Context con;
    List<dateString> datestrings;




    public dateArray(Context context, int ResourceID, List<dateString> object){
        super(context,ResourceID,object);
        resourceID=ResourceID;
        con=context;
        datestrings=object;
    }


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

        dateString ds=getItem(position);
        //LayoutInflater _LayoutInflater=LayoutInflater.from(con);
        //convertView=_LayoutInflater.inflate(resourceID, null);
        convertView= LayoutInflater.from(getContext()).inflate(resourceID,parent,false);
        if(convertView!=null){
            TextView year=(TextView)convertView.findViewById(R.id.nsd_sp_year);
            TextView month=(TextView)convertView.findViewById(R.id.nsd_sp_month);
            year.setText(ds.getYear());
            month.setText(ds.getMonth());
            Toast.makeText(getContext(),ds.getYear()+"."+ds.getMonth(),Toast.LENGTH_SHORT).show();

        }

        return convertView;
    }

    @Override
    public View getDropDownView(int position,View convertView,ViewGroup parent) {
        return super.getDropDownView(position, convertView, parent);
    }
}




public class dateArray extends BaseAdapter{

    Context c;
    List<dateString> d;

    public dateArray(Context context,List<dateString> datelist){
        c=context;
        d=datelist;
    }

    @Override
    public int getCount() {
        return d.size();
    }

    @Override
    public Object getItem(int position) {
        return d.get(position);
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater _LayoutInflater=LayoutInflater.from(c);
        convertView=_LayoutInflater.inflate(R.layout.nsd_spinner, null);
        if(convertView!=null)
        {
            TextView _TextView1=(TextView)convertView.findViewById(R.id.nsd_sp_year);
            TextView _TextView2=(TextView)convertView.findViewById(R.id.nsd_sp_month);
            _TextView1.setText(d.get(position).getYear());
            _TextView2.setText(d.get(position).getMonth());
        }
        return convertView;
    }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <TextView
        android:id="@+id/nsd_sp_year"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="年"/>
    <TextView
        android:id="@+id/nsd_sp_month"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="月"/>

</LinearLayout>

为把年月显示在Spinner上,重写了ArrayAdapter总是在下拉时出错,没发现问题。改用BaseAdapter后,功能就实现了,但ArrayAdapter是继承的BaseAdapter的啊?真奇怪。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值