展会信息港展会大全

Android动态加载ListView中的Item【安卓进化二十三】
来源:互联网   发布日期:2015-11-27 13:41:34   浏览:1469次  

导读:我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChan...

我这周上网看到动态增加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()方法中这么写也是可以的:

<span style="font-size:16px;">case 1:

view = lInflater.inflate(R.layout.main, null);

break;

</span>

www.2cto.com

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

赞助本站

人工智能实验室

相关热词: android开发 教程

AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港