Android动态加载ListView中的Item
我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChanged()方法,当点击每一个Item的时候,就通知adapter更新getView,系统得到通知就相应的加载一遍布局,就达到了动态加载item布局的效果。希望给大家带来点启迪,有问题或想要代码的可以留言,欢迎大家留言谈论listview的一些知识,以求共同进步,转载请标明出处:
http://blog.csdn.net/wdaming1986/article/details/6787455
程序开启界面,默认选中贝贝item, 点击晶晶后的界面的效果,
点击欢欢后界面的效果: 点击迎迎后界面的效果:
点击妮妮后界面的效果:
代码奉上,真理还得看代码:
在ListViewRunDemo工程中,
com.cn.daming包中的MainActivity.java类中的代码:
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的更多相关文章
- Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类
前言 近期做换肤功能,由于换肤程度较高,受限于平台本身,实现起来较复杂,暂时搁置了该功能,但也积累了一些经验,将分两篇文章来写这部分的内容,欢迎交流! 关键字:Android动态加载 声明 欢迎转载, ...
- [转载] Android动态加载Dex机制解析
本文转载自: http://blog.csdn.net/wy353208214/article/details/50859422 1.什么是类加载器? 类加载器(class loader)是 Java ...
- 【Jquery mobile】动态加载ListView 转
[Jquery mobile]动态加载ListView 分类: Jquery Mobile2011-12-01 09:04 13984人阅读 评论(1) 收藏 举报 jquerylistviewmob ...
- Android 动态加载 (二) 态加载机制 案例二
探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法 重要说明 在实践的过程中大家都会发现资源引用的问题,这里重点声明两点: 1. 资源文件是不能直接inflate的,如果简单的话直接在程序 ...
- Android 动态加载 (一) 态加载机制 案例一
在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本 ...
- Android动态加载技术初探
一.前言: 现在,已经有实力强大的公司用这个技术开发应用了,比如淘宝,大众点评,百度地图等,之所以采用这个技术,实际上,就是方便更新功能,当然,前提是新旧功能的接口一致,不然会报Not Found等错 ...
- Android动态加载jar/dex
前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优 ...
- Android动态加载代码技术
Android动态加载代码技术 在开发Android App的过程当中,可能希望实现插件式软件架构,将一部分代码以另外一个APK的形式单独发布,而在主程序中加载并执行这个APK中的代码. 实现这个任务 ...
- 【Android】Android动态加载Jar、APK的实现
本文介绍Android中动态加载Jar.APK的实现.而主要用到的就是DexClassLoader这个类.大家都知道Android和普通的Java虚拟机有差别,它只能加载经过处理的dex文件.而加载这 ...
随机推荐
- js学习笔记29----拖拽
原理:先计算鼠标与拖拽目标的左侧距离 跟 上面距离,再计算拖动后的位置. 示例代码: <!DOCTYPE html> <html lang="en"> &l ...
- C++ 接口(抽象类)
C++ 接口(抽象类)接口描述了类的行为和功能,而不需要完成类的特定实现. C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念. 如果类中至少 ...
- oracle jar
关于oracle 11g jdbc驱动 的jar包 (2012-11-21 11:17:41)转载▼ 标签: 杂谈 分类:java学习 oracle11的jdbc\lib下没有classer12.ja ...
- C# 延时小函数 很好用
平时我们在做winform开发的时候,有时候需要让程序休眠几秒钟,但是,如果我们直接使用 thread.sleep()函数,页面ui就会停止响应.怎么样解决呢,你可以把页面涉及到表现ui的代码放到一个 ...
- vector deque list
vector ,deque 和 list 顺序性容器: 向量 vector : 是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可 ...
- linux 删除文件夹及其内容,显示文件路径
比如要删除work文件夹包括里面的内容,则:rm -r /home/ftk/apache-tomcat-5.5.20/work,不管它是文件还是目录都删掉了 知道文件名 要查询文件大概地址用~cd ~ ...
- HBase学习之深入理解Memstore-6
MemStore是HBase非常重要的组成部分,深入理解MemStore的运行机制.工作原理.相关配置,对HBase集群管理以及性能调优有非常重要的帮助. HBase Memstore 首先通过简 ...
- VC++ 操作Windows快捷方式
声明:本文是参考网友博文,然后自己实践整理所得,转载请注明出处! Windows的快捷方式实际上是一个带有扩展名LNK的数据文件,其中包含有用于访问Windows某一对象(即在资源管理器中所能浏览的所 ...
- 总结一下前端面试题之Html和CSS
总结一下关于前端的面试题,今天我们分享关于Html和CSS部分的 面试 (1) 1. 常用那几种浏览器测试?有哪些内核(Layout Engine)? 2. 说下行内元素和块级元素的区别?行内块元素的 ...
- CSS 解决IE6双倍距离BUG
只要满足下面3个条件才会出现这个BUG: 1)要为块状元素: 2)要左侧浮动: 3)要有左外边距(margin-left): 解决这个BUG很容易,只需要在相应的块状元素的 ...