android之使用ListView實現多菜單功能

fmms 12年前發布 | 54K 次閱讀 Android Android開發 移動開發

我們知道很多軟件都有設置菜單項如微信墨跡天氣等的設置界面。當設置里有很多選項這時我們可以選擇使用ListView實現。

布局文件如下:

    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:orientation="vertical"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:background="@drawable/splash_background"  
        >  
        <ListView android:id="@+id/more_List"  
            android:layout_width="fill_parent"  
            android:layout_height="fill_parent"  
            android:divider="@drawable/list_bottom_line"  
            android:listSelector="#00000000"  
            android:cacheColorHint="#00000000">  
        </ListView>  
    </LinearLayout>  
很簡單只有一個ListView

item的布局:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="horizontal"  
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:padding="8dip"  
    android:background="@drawable/list_item"  
    >  
    <ImageView android:id="@+id/item_icon"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
    />  
    <TextView android:id="@+id/more_item_text"  
        android:layout_marginLeft="10dip"  
        android:textSize="20dip"  
        android:textColor="#000000"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"/>  
    <ImageView android:id="@+id/item_image"  
        android:layout_marginTop="5dip"  
        android:layout_marginLeft="10dip"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:background="@drawable/triangle"  
    />  
</LinearLayout> 
設置成水平布局,一次是圖標,文字說明,箭頭圖標

主要代碼如下:
    package com.cloay.news;  

    import com.cloay.news.bean.MoreAdapter;  
    import com.cloay.news.service.MainService;  
    import com.cloay.news.util.AlertDlgUtil;  
    import com.waps.AppConnect;  

    import android.content.Intent;  
    import android.os.Bundle;  
    import android.view.View;  
    import android.widget.AdapterView;  
    import android.widget.AdapterView.OnItemClickListener;  
    import android.widget.ListView;  

    /** 
     * 更多界面包含幫助,關于等。 
     * @author Cloay 
     * 2012-3-3 
     * 下午09:45:12 
     */  
    public class MoreActivity extends NewsReaderActivity {  
        private ListView moreList;  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.more);  
            MainService.allActivity.add(this);  
            moreList = (ListView) findViewById(R.id.more_List);  
            MoreAdapter adapter = new MoreAdapter(this);  
            moreList.setAdapter(adapter);  
            moreList.setOnItemClickListener(new OnItemClickListener() { //為每一個item設置相應的響應  

                @Override  
                public void onItemClick(AdapterView<?> parent, View view,  
                        int position, long id) {  
                    switch(position){  
                    case 0: //關于  
                        startActivity(AboutActivity.class);  

                        break;  
                    case 1:  
                        //分享  
                        Intent intent=new Intent(Intent.ACTION_SEND);  
                        intent.setType("text/plain");  
                        intent.putExtra(Intent.EXTRA_SUBJECT, "分享");  
                        intent.putExtra(Intent.EXTRA_TEXT, "I would like to share this with you...");  
                        startActivity(Intent.createChooser(intent, getTitle()));  
                        break;  
                    case 2:  
                        //幫助  
                        startActivity(HelpActivity.class);  
                        break;  
                    case 3:  
                        //意見反饋  
                        AppConnect.getInstance(MoreActivity.this).showFeedback();  
                        break;  
                    case 4://退出  
                        AlertDlgUtil.AlertExit(MoreActivity.this);  
                        break;  
                    }  
                }  
            });  
        }  
        private void startActivity(Class<?>cls){  
            Intent intent = new Intent(this, cls);  
            this.startActivity(intent);  
        }  
    }  
下面是為ListView提供數據的Adapter:
    package com.cloay.news.bean;  

    import java.util.ArrayList;  
    import java.util.List;  

    import com.cloay.news.R;  

    import android.content.Context;  
    import android.view.LayoutInflater;  
    import android.view.View;  
    import android.view.ViewGroup;  
    import android.widget.BaseAdapter;  
    import android.widget.ImageView;  
    import android.widget.TextView;  

    /** 
     * 為更多中listview提供數據 
     * @author Cloay 
     * 2012-3-5 
     * 下午06:28:14 
     */  
    public class MoreAdapter extends BaseAdapter{  

        private LayoutInflater inflater;  
        private Context context;  
        public static final List<String> more_list = new ArrayList<String>();//為條目提供數據  
        public MoreAdapter(Context context){  
            this.context = context;  
            inflater = LayoutInflater.from(this.context);  
            more_list.add(context.getResources().getString(R.string.main_square));  
            more_list.add(context.getResources().getString(R.string.share));  
            more_list.add(context.getResources().getString(R.string.help_text));  
            more_list.add(context.getResources().getString(R.string.advice));  
            more_list.add(context.getResources().getString(R.string.exit_title));  
        }  
        @Override  
        public int getCount() {  
            return more_list.size();  //條目數量  
        }  

        @Override  
        public Object getItem(int position) {  
            return null;  
        }  

        @Override  
        public long getItemId(int position) {  
            return 0;  
        }  

        @Override  
        public View getView(int position, View convertView, ViewGroup parent) {  
            if (convertView == null) {    
                convertView = inflater.inflate(    
                        R.layout.more_list, null);    
            }   
            ImageView icon = (ImageView) convertView.findViewById(R.id.item_icon);//設置每個條目的圖標  
            if(0 == position){  
                icon.setBackgroundResource(R.drawable.icon_square);    
            }else if(1 == position){  
                icon.setBackgroundResource(android.R.drawable.ic_menu_share);  
            }else if(2 == position){  
                icon.setBackgroundResource(R.drawable.icon_setting);  
            }else if(3 == position){  
                icon.setBackgroundResource(android.R.drawable.ic_menu_edit);  
            }else{  
                icon.setBackgroundResource(R.drawable.menu_exit);  
            }  
            TextView text = (TextView) convertView.findViewById(R.id.more_item_text); //設置條目的文字說明  
            text.setText(more_list.get(position));  
            return convertView;  
        }  

    }  
運行效果圖如下:

android之使用ListView實現多菜單功能

就介紹到這里,有什么問題請留言大家一起學習交流!

轉自:http://blog.csdn.net/shang_515/article/details/7329118

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!