我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChanged()方法,当点击每一个Item的时候,就通知adapter更新getView,系统得到通知就相应的加载一遍布局,就达到了动态加载item布局的效果。希望给大家带来点启迪,有问题或想要代码的可以留言,欢迎大家留言谈论listview的一些知识,以求共同进步,转载请标明出处:

http://blog.csdn.net/wdaming1986/article/details/6787455

程序开启界面,默认选中贝贝item,                   点击晶晶后的界面的效果,

                 

点击欢欢后界面的效果:                                      点击迎迎后界面的效果:

                 

点击妮妮后界面的效果:

代码奉上,真理还得看代码:

在ListViewRunDemo工程中,

com.cn.daming包中的MainActivity.java类中的代码:

  1. package com.cn.daming;  
    
    import android.app.ListActivity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.AdapterView.OnItemClickListener;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    import android.widget.TextView; public class MainActivity extends ListActivity { private ListAddLayoutAdapter mAdapter;
    @SuppressWarnings("unused")
    private LayoutInflater lInflater;; int[] image = {
    R.drawable.s_beibei,
    R.drawable.s_jingjing,
    R.drawable.s_huanhuan,
    R.drawable.s_yingying,
    R.drawable.s_nini
    }; String[] show_name = {
    "贝贝",
    "晶晶",
    "欢欢",
    "迎迎",
    "妮妮"
    }; private int id = 0;
    @SuppressWarnings("unused")
    private int last = 0; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mAdapter = new ListAddLayoutAdapter(this);
    this.setListAdapter(mAdapter); this.getListView().setOnItemClickListener(new OnItemClickListener(){
    public void onItemClick(AdapterView<?> arg0, View arg1, int position,
    long arg3) {
    id = position;
    mAdapter.notifyDataSetChanged();
    last = position;
    }
    });
    } public class ListAddLayoutAdapter extends BaseAdapter { private Context context;
    private MainActivity activity; public ListAddLayoutAdapter(Context context) {
    this.context = context;
    this.activity = (MainActivity)context;
    lInflater = activity.getLayoutInflater();
    } public int getCount() {
    return image.length;
    } public Object getItem(int arg0) {
    return null;
    } public long getItemId(int position) {
    return position;
    } public View getView(int position, View arg1, ViewGroup arg2) {
    LinearLayout layout = new LinearLayout(context);
    layout.setOrientation(LinearLayout.VERTICAL);
    layout.setPadding(0, 8, 0, 8); layout.addView(addTitleView(position)); if(id==position){
    layout.addView(addCustomView(position));
    } return layout;
    } public View addTitleView(int i){
    LinearLayout layout = new LinearLayout(context);
    layout.setOrientation(LinearLayout.HORIZONTAL); ImageView iv = new ImageView(context);
    iv.setImageResource(image[i]);
    layout.addView(iv,
    new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT)); TextView tv = new TextView(context);
    tv.setText(show_name[i]);
    tv.setTextSize(18f);
    layout.addView(tv,
    new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT)); layout.setGravity(Gravity.CENTER);
    return layout;
    } public View addCustomView(int i){
    View view = new View(context); switch(i){
    case 0:
    ImageView iv1 = new ImageView(context);
    iv1.setImageResource(R.drawable.beibei);
    view = iv1;
    break; case 1:
    ImageView iv2 = new ImageView(context);
    iv2.setImageResource(R.drawable.jingjing);
    view = iv2;
    break; case 2:
    ImageView iv3= new ImageView(context);
    iv3.setImageResource(R.drawable.huanhuan);
    view = iv3;
    break;
    case 3:
    ImageView iv4 = new ImageView(context);
    iv4.setImageResource(R.drawable.yingying);
    view = iv4;
    break;
    case 4:
    ImageView iv5 = new ImageView(context);
    iv5.setImageResource(R.drawable.nini);
    view = iv5;
    break;
    }
    return view;
    }
    }
    }

说明:也可以动态加载布局文件也可以的:

在addCustomView()方法中这么写也是可以的:

工程的图片没有上传,希望大家自己找些图片就可以了:

Android动态加载ListView中的Item的更多相关文章

  1. Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类

    前言 近期做换肤功能,由于换肤程度较高,受限于平台本身,实现起来较复杂,暂时搁置了该功能,但也积累了一些经验,将分两篇文章来写这部分的内容,欢迎交流! 关键字:Android动态加载 声明 欢迎转载, ...

  2. [转载] Android动态加载Dex机制解析

    本文转载自: http://blog.csdn.net/wy353208214/article/details/50859422 1.什么是类加载器? 类加载器(class loader)是 Java ...

  3. 【Jquery mobile】动态加载ListView 转

    [Jquery mobile]动态加载ListView 分类: Jquery Mobile2011-12-01 09:04 13984人阅读 评论(1) 收藏 举报 jquerylistviewmob ...

  4. Android 动态加载 (二) 态加载机制 案例二

    探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法 重要说明 在实践的过程中大家都会发现资源引用的问题,这里重点声明两点: 1. 资源文件是不能直接inflate的,如果简单的话直接在程序 ...

  5. Android 动态加载 (一) 态加载机制 案例一

    在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...

  6. Android动态加载技术初探

    一.前言: 现在,已经有实力强大的公司用这个技术开发应用了,比如淘宝,大众点评,百度地图等,之所以采用这个技术,实际上,就是方便更新功能,当然,前提是新旧功能的接口一致,不然会报Not Found等错 ...

  7. Android动态加载jar/dex

    前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优 ...

  8. Android动态加载代码技术

    Android动态加载代码技术 在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码. 实现这个任务 ...

  9. 【Android】Android动态加载Jar、APK的实现

    本文介绍Android中动态加载Jar.APK的实现.而主要用到的就是DexClassLoader这个类.大家都知道Android和普通的Java虚拟机有差别,它只能加载经过处理的dex文件.而加载这 ...

随机推荐

  1. Struts2 的Action中取得请求参数值的几种方法

    先看GetRequestParameterAction类代码:  Java代码 public class GetRequestParameterAction extends ActionSupport ...

  2. js学习笔记14----DOM概念及子节点类型

    1.概念 DOM:Document Object Model---文档对象模型 文档:html页面 文档对象:页面中的元素 文档对象模型:是一种定义,为了能够让程序(js)去操作页面中的元素. DOM ...

  3. javascript控制服务器控件实例一

    最近多个页面需要加载一些下拉列表框,供用户选择,原来都是在服务器端进行加载应运用.最后由于 业务逻辑方面的考虑,需要将DropDownList的部分功能放到客户端实现.现在下拉列表的功能使用起来感 觉 ...

  4. Hibernate 注解中CascadeType用法汇总

    这两天,参加一个课程设计,同时这个项目又作为一个模块镶嵌到其他项目中,考虑如此,应与原先的架构相同,因牵扯到留言和相互@功能,故数据库之间OneToOne,OneToMany,ManyToMany之风 ...

  5. Android BitmapFactory

    android BitmapFactory BitmapFactory是一个工具类,用于从不同数据源解析,创建Bitmap对象.bitmap类代表位图. BitmapFactory常用方法 stati ...

  6. 在Access中执行SQL语句

    Access在小型系统开发中等到了广泛使用.虽然Access提供了可视化的操作方法,但许多开发人员还是喜欢直接用SQL语句操作数据表.如何在Access中打开SQL视图,对于初次使用Access的程序 ...

  7. 好的API设计

    [非原创,原文链接] API设计书籍下载: 1.keynote.pdf 2.api-design.pdf 最近在重构公司的一个交互中间件,在重新设计API及总体架构的时候思考了许多, 不禁萌发了一个疑 ...

  8. 转载:mysql 操作总结 INSERT和REPLACE

    转自:http://www.jb51.net/article/19411.htm   用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做 ...

  9. Java几款性能分析工具的对比

    在给客户的应用程序维护的过程中,我注意到在高负载下的一些性能问题.理论上,增加对应用程序的负载会使性能等比率的下降.然而,我认为性能下降的比率远远高于负载的增加.我也发现,性能可以通过改变应用程序的逻 ...

  10. Unity-Animator(Mecanim)深入系列总索引

    花了不少时间完成了这篇Unity Animator学习系列文章,其中大多数内容都来自个人实践,包括API部分很多都是亲测,期望和网上的诸多教程达到互补. 相关参考文档 Unity Animator官方 ...