Android動態加載ListView中的Item【安卓進化二十三】 – Android移動開發技術文章_手機開發 Android移動開發教學課程

 

我這周上網看到動態增加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.aiwalls.com

工程的圖片沒有上傳,希望大傢自己找些圖片就可以瞭:

 

發佈留言