TabHost+三种Listview

MainActivity:

package com.example.tablehost;

import android.support.v7.app.ActionBarActivity;
import android.app.TabActivity;
import android.content.Context;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
import android.widget.ExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TextView;
import java.util.ArrayList;  
import java.util.HashMap;  
import java.util.List;  
import java.util.Map;

import android.app.Activity;

public class MainActivity extends TabActivity {
    
     int[] images={
             R.drawable.china,
             R.drawable.usa,
             R.drawable.japan,        
     };
     
     String[] names;
     
     ExpandableListView exlistView;
     private String[][] arms = new String[][]{
             {"111", "111", "111", "111"},
             {"222", "222", "222", "222"},
             {"333", "333", "333", "333"},
             {"444", "444", "444", "444"},
     };
     String[] from = { "image", "title" };  
     int[] to = { R.id.imageView1, R.id.textView1 };  
   

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //Tabhost
          TabHost tabHost=  getTabHost();
          tabHost.addTab(tabHost.newTabSpec("t1").setIndicator("List").setContent(R.id.tab1));
          tabHost.addTab(tabHost.newTabSpec("t1").setIndicator("Grid").setContent(R.id.tab2));
          tabHost.addTab(tabHost.newTabSpec("t1").setIndicator("Expan").setContent(R.id.tab3));
        //ListView   
            ListView listView=(ListView)findViewById(R.id.listView1);
            names=getResources().getStringArray(R.array.country);
            
            MyAdapter adapter=new MyAdapter(images, names, this);
            
            listView.setAdapter(adapter);
        //ExpandableListView
            exlistView = (ExpandableListView) findViewById(R.id.expandableListView1);            
            MyExpandableListAdapter exadapter = new MyExpandableListAdapter();            
            exlistView.setAdapter(exadapter);
            exlistView.setGroupIndicator(null);
            
        //GridView
            GridView gridview=(GridView)findViewById(R.id.gridView1);
            SimpleAdapter pictureAdapter = new SimpleAdapter(this, getList(),  
                    R.layout.gridlayout, from, to);        
            gridview.setAdapter(pictureAdapter);

        }

        
        public class MyAdapter extends BaseAdapter{
            int[] icons;
            String[] txts;
            Context context;
            
            
          
            public MyAdapter(int[] icons, String[] txts, Context context) {
                super();
                this.icons = icons;
                this.txts = txts;
                this.context = context;
            }

            @Override
            public int getCount() {
                // TODO Auto-generated method stub
                return images.length;
            }

            @Override
            public Object getItem(int arg0) {
                // TODO Auto-generated method stub
                return arg0;
            }

            @Override
            public long getItemId(int arg0) {
                // TODO Auto-generated method stub
                return arg0;
            }

            @Override
            public View getView(int index, View arg1, ViewGroup arg2) {
                // TODO Auto-generated method stub
                    ViewGroup group=(ViewGroup)getLayoutInflater().inflate(R.layout.listlayout, null);
                    
                    ImageView imageView=(ImageView)group.findViewById(R.id.imageView1);
                    TextView textView=(TextView)group.findViewById(R.id.textView1);
                    
                    imageView.setImageResource(icons[index]);
                    textView.setText(txts[index]);
                
                return group;
            }}
        public class MyExpandableListAdapter implements ExpandableListAdapter {
            int[] logos = new int[]{
                    R.drawable.china,
                    R.drawable.usa,
                    R.drawable.japan,
                    
            };
            private String[] armTypes = new String[]{
                    "China", "USA", "Japan"
            };
            private String[][] arms = new String[][]{
                {"111", "111", "111", "111"},
                 {"222", "222", "222", "222"},
                 {"333", "333", "333", "333"},
               
            };
         
            @Override
            public void registerDataSetObserver(DataSetObserver observer) {
         
            }
         
            @Override
            public void unregisterDataSetObserver(DataSetObserver observer) {
         
            }
         
            @Override
            public int getGroupCount() {
                return armTypes.length;
            }
         
            @Override
            public int getChildrenCount(int groupPosition) {
                return arms[groupPosition].length;
            }
         
            @Override
            public Object getGroup(int groupPosition) {
                return armTypes[groupPosition];
            }
         
            @Override
            public Object getChild(int groupPosition, int childPosition) {
                return arms[groupPosition][childPosition];
            }
         
            @Override
            public long getGroupId(int groupPosition) {
                return groupPosition;
            }
         
            @Override
            public long getChildId(int groupPosition, int childPosition) {
                return childPosition;
            }
         
            @Override
            public boolean hasStableIds() {
                return true;
            }
         
            @Override
            public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
                LinearLayout ll = new LinearLayout(MainActivity.this);
                ll.setOrientation(LinearLayout.HORIZONTAL);
                ImageView logo = new ImageView(MainActivity.this);
                
                LayoutParams mParams = new LayoutParams(75, 75);
                logo.setLayoutParams(mParams);
                logo.setImageResource(logos[groupPosition]);
                logo.setPadding(0, 0, 0, 0);
                ll.addView(logo);
                TextView textView = getTextView();
                textView.setText(getGroup(groupPosition).toString());
                textView.setPadding(10, 0, 0, 0);
                ll.addView(textView);
                return ll;
            }
         
            @Override
            public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
                TextView textView = getTextView();
                textView.setText(getChild(groupPosition, childPosition).toString());
                return textView;
            }
         
            @Override
            public boolean isChildSelectable(int groupPosition, int childPosition) {
                return true;
            }
         
            @Override
            public boolean areAllItemsEnabled() {
                return false;
            }
         
            @Override
            public boolean isEmpty() {
                return false;
            }
         
            @Override
            public void onGroupExpanded(int groupPosition) {
         
            }
         
            @Override
            public void onGroupCollapsed(int groupPosition) {
         
            }
         
            @Override
            public long getCombinedChildId(long groupId, long childId) {
                return 0;
            }
         
            @Override
            public long getCombinedGroupId(long groupId) {
                return 0;
            }
         
            private TextView getTextView() {
                AbsListView.LayoutParams lp = new AbsListView.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, 64);
                TextView textView = new TextView(MainActivity.this);
                textView.setLayoutParams(lp);
                textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
                textView.setPadding(36, 0, 0, 0);
                textView.setTextSize(20);
                return textView;
            }
        }    
        public List<Map<String, Object>> getList() {  
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
            Map<String, Object> map = null;  
      
            String[] titles = new String[] { "1", "2", "3", "4", "5","6" };  
            Integer[] images = { R.drawable.a, R.drawable.b,  
                    R.drawable.c, R.drawable.d, R.drawable.e,R.drawable.f };  
      
            for (int i = 0; i < images.length; i++) {  
                map = new HashMap<String, Object>();  
                map.put("image", images[i]);  
                map.put("title", titles[i]);  
                list.add(map);  
            }  
            return list;  
        }  
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

Layout_main:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.tablehost.MainActivity" >

    <TabHost
        android:id="@android:id/tabhost"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

           

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" >

              <LinearLayout
                    android:id="@+id/tab1"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >

                    <ListView
                        android:id="@+id/listView1"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content" >
                    </ListView>

                  

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >
                    
                     <GridView
                        android:id="@+id/gridView1"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:numColumns="3" >
                    </GridView>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical">
                    
                     <ExpandableListView
                        android:id="@+id/expandableListView1"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:childDivider="#787878">
                    </ExpandableListView>
                </LinearLayout>
                
                 
            </FrameLayout>
            <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" >
            </TabWidget>
        </LinearLayout>
    </TabHost>

</RelativeLayout>




猜你喜欢

转载自blog.csdn.net/quiethrh/article/details/79834348