自定义Adapter填充listview

首先自定义出自己的适配器,适配器是继承baseadapter,需要重写其的几个重要方法,

显示效果是在getview方法中实现的,要显示多种的view,就需要在加载多种布局文件的,

 

getCount()是设置显示多少条view的,一般设置设置成你要显示的数组的大小。

 

代码如下:

 

public class Adapter extends BaseAdapter {

    private ArrayList<HashMap<String, Object>> data=null;
    private LayoutInflater inflater = null;


    public Adapter(Context context,ArrayList<HashMap<String, Object>> da) {
        super();
        this.data=da;
        this.inflater = LayoutInflater.from(context);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub

        ViewHolderDept deptHolder = null;
        ViewHolderUser userHolder = null;
        int type = getItemViewType(position);

        if (null == convertView) {
            switch (type) {
                case 0:
                    convertView = inflater.inflate(
                            R.layout.test_layout, null);
                    deptHolder = new ViewHolderDept();
                    deptHolder.userName = (TextView) convertView
                            .findViewById(R.id.test_textView);
                    convertView.setTag(deptHolder);
                    break;
                case 1:
                    convertView = inflater.inflate(
                            R.layout.test_image_layout, null);
                    userHolder = new ViewHolderUser();
                    userHolder.userName = (ImageView) convertView
                            .findViewById(R.id.test_imageView);
                    convertView.setTag(userHolder);
                    break;
            }
        } else {
            switch (type) {
                case 0:
                    deptHolder = (ViewHolderDept) convertView.getTag();
                    break;
                case 1:
                    userHolder = (ViewHolderUser) convertView.getTag();
                    break;
            }
        }
        HashMap<String, Object> map = data.get(position);

        switch (type) {
            case 0:
                deptHolder.userName.setText(map.get("name").toString());
                deptHolder.userName.setTextSize(20);
                break;
            case 1:
                userHolder.userName
                        .setImageResource(R.drawable.adj);

                // convertView.setBackgroundColor(Color.rgb(238, 238, 238));
        }
        return convertView;
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        return (Integer) data.get(position).get("type");
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return data.get(position);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return data.size();
    }

    private class ViewHolderDept {
        TextView userName;

    }

    private class ViewHolderUser {
        ImageView userName;

    }

 

 

 

下面是使用自己的自定义的适配器去填充listview

 

package com.example.administrator.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;

import com.example.administrator.wlb1.R;

import java.util.ArrayList;
import java.util.HashMap;

public class TESTActivity extends AppCompatActivity {
    private ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();
    TextView tv;
    ListView listview;
    Adapter mAdapter;
    EditText test_et;
    Button test_ib;
    Button test_bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);
        initdata();
        initWidget();
        setOnClick();

    }
/初始化数据,以便填充listview,listview与Adapter显示联系枢纽就是data,就是一起应用data的数据
    private void initdata(){
        HashMap<String, Object> testdata;
        for(int i=0;i<200;i++)
        {   int type;
            testdata=new HashMap<String, Object>();
            if(i%2==0)
            {
                type=1;
                testdata.put("type",type);
            }
            else{
                type=0;
                testdata.put("type",type);
            }
            testdata.put("name","聊天的内容"+i);
            data.add(testdata);
        }
    }

    private  void initWidget(){
        tv= (TextView)findViewById(R.id.textView);
        tv.setText("聊天界面");
        test_et=(EditText)findViewById(R.id.test_et) ;
        test_bt=(Button)findViewById(R.id.test_bt);
        test_ib=(Button) findViewById(R.id.test_ib);
        listview= (ListView)findViewById(R.id.listView);
        mAdapter = new Adapter(this,data);
        listview.setAdapter(mAdapter);
        listview.setSelection(listview.getAdapter().getCount()-1);

    }
    private void setOnClick(){
        test_ib.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                HashMap<String, Object> testdata;
                testdata=new HashMap<String, Object>();
                testdata.put("name",test_et.getText().toString());
                test_et.setText("");
                int type;

                type=0;
                testdata.put("type",type);
                data.add(testdata);

                mAdapter.notifyDataSetChanged();
                listview.setSelection(listview.getAdapter().getCount()-1);
            }
        });
        test_bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                HashMap<String, Object> testdata;
                testdata=new HashMap<String, Object>();
                testdata.put("name","图片");
                int type;

                type=1;
                testdata.put("type",type);
                data.add(testdata);

                mAdapter.notifyDataSetChanged();
                listview.setSelection(listview.getAdapter().getCount()-1);
            }
        });
    }
}

其中重要的是

listview= (ListView)findViewById(R.id.listView);
        mAdapter = new Adapter(this,data);
        listview.setAdapter(mAdapter);


//设置显示listview充最底下显示数据
listview.setSelection(listview.getAdapter().getCount()-1);

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值