敲敲自定义Adapter与ViewHolder(个人笔记_学习源码)

         敲了敲自定义Adapter,把代码贴着。

package com.example.administrator.learnbaseadapter;

//这是主界面源码

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import com.example.administrator.learnbaseadapter.Adapter.MyAdapter;

public class MainActivity extends AppCompatActivity {
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_main );
        listView=(ListView)findViewById ( R.id.listView );
        listView.setAdapter ( new MyAdapter ( MainActivity.this ) );
    }
}
package com.example.administrator.learnbaseadapter.bean;

/**
 * 这是一个Java Bean用于临时存储数据
 */

public class ListBean {
    private int imageId;
    private String text;

    public int getImageId() {
        return imageId;
    }

    public void setImageId(int imageId) {
        this.imageId = imageId;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public ListBean(int imageId, String text) {
        this.imageId = imageId;
        this.text = text;
    }

    public ListBean() {
    }
}
package com.example.administrator.learnbaseadapter.Adapter;

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

import com.example.administrator.learnbaseadapter.R;
import com.example.administrator.learnbaseadapter.bean.ListBean;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2018/9/14.
 */

public class MyAdapter extends BaseAdapter {
    LayoutInflater layoutInflater;
    List<ListBean> mList=new ArrayList<> (  );
    ViewHolder vh=new ViewHolder ();//必须new,防止空指针


    public MyAdapter(Context context){
        initData ();
        layoutInflater=LayoutInflater.from ( context );
    }

    @Override
    public int getCount() {
        return mList.size ();
    }//决定了有多少行数据

    @Override
    public Object getItem(int i) {
        return mList.get ( i );
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        if(view==null){
            view=layoutInflater.inflate( R.layout.list_item ,null);
            vh.imageView=view.findViewById ( R.id.item_image );
            vh.textView=view.findViewById ( R.id.item_text );
            view.setTag ( vh );
        }
        else{
          vh= (ViewHolder) view.getTag ();
        }
        vh.imageView.setImageResource (  mList.get ( i ).getImageId ());
        vh.textView.setText (  mList.get ( i ).getText ());
        return view;
    }
    static class ViewHolder{
        ImageView imageView;
        TextView textView;
    }

    //测试方法,先填充些数据进来
    public void initData(){
        mList.add ( new ListBean ( R.drawable.banana2,"一名热爱自由的网友" ) );
        mList.add ( new ListBean ( R.drawable.banana1,"一名热爱自由的球员" ) );
        mList.add ( new ListBean ( R.drawable.banana2,"有人问我成功的秘诀" ) );
        mList.add ( new ListBean ( R.drawable.banana5,"你看过凌晨四点的洛杉矶吗" ) );
        mList.add ( new ListBean ( R.drawable.banana5,"你看过凌晨四点的洛杉矶吗" ) );
        mList.add ( new ListBean ( R.drawable.banana1,"一名热爱自由的网友如是说" ) );
        mList.add ( new ListBean ( R.drawable.banana1,"一名热爱自由的网友如是说" ) );
        mList.add ( new ListBean ( R.drawable.banana1,"一名热爱自由的网友如是说" ) );
        mList.add ( new ListBean ( R.drawable.banana1,"一名热爱自由的网友如是说" ) );
        mList.add ( new ListBean ( R.drawable.banana1,"一名热爱自由的网友如是说" ) );
    }
}

                                                                                       

需要这个DEMO源码可以QQ找我1198735371。

猜你喜欢

转载自blog.csdn.net/weixin_38785199/article/details/82699927