返回
顶部

修改密码

Android动态加载ListView中的Item【安卓进化二十三】

+1

-1

收藏

+1

-1

点赞0

评论0

我这周上网看到动态增加listview的每一项item的布局,今天抽空自己写了一个,方便自己日后使用,这个效果还是很不错的,用到了Adapter的notifyDataSetChanged()方法,当点击每一个Item的时候,就通知adapter更新getView,系统得到通知就相应的加载一遍布局,就达到了动态加载…

 

我这周上网看到动态增加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

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

 

\

扫一扫在手机打开

评论
已有0条评论
0/150
提交
热门评论
相关推荐
今日要闻
换一批
热点排行