Andriod 适配器使用事例

本文通过示例讲解了Android中自定义适配器的使用,包括GeneralAdapter、SimpleAdapter和ArrayAdapter的实现方式。从自定义适配器继承BaseAdapter开始,详细展示了如何设置数据、获取视图及绑定数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义适配器继承BaseAdapter:


    class GeneralAdapter extends BaseAdapter{

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

        @Override
        public GeneralBean getItem(int position) {
            return mGenerals.get(position);
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            //拿到ListViewItem的布局,转换为View类型的对象
            View layout=View.inflate(MainActivity.this, R.layout.item_generals, null);
            //找到显示军事家头像的ImageView
            ImageView ivThumb=(ImageView) layout.findViewById(R.id.ivThumb);
            //找到显示军事家名字的TextView
            TextView tvName=(TextView) layout.findViewById(R.id.tvName);
            //获取军事中下标是position的军事家对象
            GeneralBean bean=mGenerals.get(position);
            //显示军事家头像
            ivThumb.setImageResource(bean.getResid());
            //显示军事家的姓名
            tvName.setText(bean.getName());
            
            return layout;
        }
        
    }


SimpleAdapter:

public class MainActivity extends Activity {

    ListView mlvGenerals;
    List<Map<String, Object>> mGenerals;
    SimpleAdapter mAdapter;
    
    static final String KEY_PHOTOID="photoid";
    static final String KEY_NAME="name";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();//初始化数据
        initView();
    }

    private void initView() {
        mlvGenerals=(ListView) findViewById(R.id.lvGeneral);
        mAdapter=new SimpleAdapter(this, mGenerals,
            R.layout.item_generals,
            new String[]{KEY_PHOTOID,KEY_NAME},
            new int[]{R.id.ivThumb,R.id.tvName});
        mlvGenerals.setAdapter(mAdapter);
    }

    private void initData() {
        int[] resid={
                R.drawable.baiqi,R.drawable.caocao,R.drawable.chengjisihan,
                R.drawable.hanxin,R.drawable.lishimin,R.drawable.nuerhachi,
                R.drawable.sunbin,R.drawable.sunwu,R.drawable.yuefei,
                R.drawable.zhuyuanzhang
        };
        String[] names=getResources().getStringArray(R.array.generals);
        mGenerals=new ArrayList<Map<String,Object>>();
        HashMap<String, Object> general;
        for (int i = 0; i < names.length; i++) {
            general=new HashMap<String, Object>();
            general.put(KEY_PHOTOID, resid[i]);
            general.put(KEY_NAME, names[i]);
            mGenerals.add(general);
        }
    }

ArrayAdapter:

public class MainActivity extends Activity {
    ListView mlvWeek;
    ArrayAdapter<CharSequence> mAdapter;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mlvWeek=(ListView) findViewById(R.id.lvWeek);
        mAdapter=ArrayAdapter.createFromResource(this,
                R.array.day_of_week,
                android.R.layout.simple_expandable_list_item_1);
        mlvWeek.setAdapter(mAdapter);
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值