GridView

GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容。是实现九宫图的首选,其用法与ListView大致相同。

属性

android:numColumns 设置列数
android:columnWidth 设置列的宽度
android:horizontalSpacing 设置两列之间的间距
android:verticalSpacing 设置两行之间的间距

<GridView  android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3" ></GridView>

代码示例

实体类Fruit

public class Fruit {    private String name;    private int image;    public Fruit(String name, int image) {        this.name = name;        this.image = image;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getImage() {        return image;    }    public void setImage(int image) {        this.image = image;    }}

适配器MyGridAdapter

import java.util.ArrayList;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;public class MyGridAdapter extends BaseAdapter{    private LayoutInflater inflater;    private ArrayList<Fruit> list;    public MyGridAdapter(LayoutInflater inflater, ArrayList<Fruit> list) {        this.inflater = inflater;        this.list = list;    }    @Override    public int getCount() {        return list.size();    }    @Override    public Object getItem(int position) {        return position;    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Fruit fruit =list.get(position);        View view;        ViewHolder viewHolder;        if(convertView==null){            view=inflater.inflate(R.layout.fruit_gridview, null);            viewHolder=new ViewHolder();            viewHolder.image=(ImageView) view.findViewById(R.id.imageview);            viewHolder.name=(TextView) view.findViewById(R.id.textview);            view.setTag(viewHolder);        }else{            view=convertView;            viewHolder=(ViewHolder) view.getTag();        }        viewHolder.image.setImageResource(fruit.getImage());        viewHolder.name.setText(fruit.getName());        return view;    }    class ViewHolder{        ImageView image;        TextView name;    }}

自定义布局

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center"    android:orientation="vertical" >    <ImageView  android:id="@+id/imageview" android:layout_width="wrap_content" android:layout_height="wrap_content" />    <TextView  android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>

MainActivity

import java.util.ArrayList;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.GridView;import android.widget.Toast;import android.app.Activity;public class MainActivity extends Activity {    private LayoutInflater inflater;    private ArrayList<Fruit> list;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        inflater = getLayoutInflater();        list=new ArrayList<Fruit>();        for (int i = 0; i <= 5; i++) {            Fruit apple = new Fruit("苹果", R.drawable.apple);            Fruit banana = new Fruit("香蕉", R.drawable.banana);            Fruit grape = new Fruit("葡萄", R.drawable.grape);            Fruit strawberry = new Fruit("草莓", R.drawable.strawberry);            list.add(apple);            list.add(banana);            list.add(grape);            list.add(strawberry);        }        GridView gridView = (GridView) findViewById(R.id.gridview);        MyGridAdapter adapter = new MyGridAdapter(inflater, list);        gridView.setAdapter(adapter);        gridView.setOnItemClickListener(new OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position,                    long id) {                Toast.makeText(MainActivity.this, "你选中的水果为:"+list.get(position).getName(), Toast.LENGTH_SHORT).show();                          }        });    }}

运行结果:图片以3列显示,点击图片,短暂显示点击的内容

AutoCompleteTextView

AutoCompleteTextView是关键字搜索框,输入关键字,会显示适配的内容

 <AutoCompleteTextView android:id="@+id/autotextview" android:layout_width="match_parent" android:layout_height="wrap_content"/>

MainActivity

import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.AutoCompleteTextView;import android.app.Activity;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        AutoCompleteTextView autoTextView = (AutoCompleteTextView) findViewById(R.id.autotextview);        String[] data = { "layout_linear", "layout_relative", "view_text",                "view_image", "radiobutton" };        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_list_item_1, data);        autoTextView.setAdapter(adapter);    }}

运行结果:

Spinner

Spinner是用于下拉菜单的控件。

 <Spinner  android:id="@+id/spinner" android:layout_width="match_parent" android:layout_height="wrap_content"/>

MainActivity

import android.os.Bundle;import android.widget.ArrayAdapter;import android.widget.Spinner;import android.app.Activity;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        Spinner spinner = (Spinner) findViewById(R.id.spinner);        String[] fruits = { "苹果", "香蕉", "葡萄", "西瓜", "草莓", "荔枝" };        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_spinner_dropdown_item, fruits);        spinner.setAdapter(adapter);    }}

运行结果:

Gallery

Gallery组件主要用于横向显示图像列表,主要的用法和ListView大致类似,此控件已被淘汰,在此不做深入了解!

ExpanableListView

ExpanableListView主要用于分组列表,是一个二级控件,相当于ListView的嵌套。它借助的适配器的实现类为BaseExpanableListAdapter。

<ExpandableListView  android:id="@+id/expandablelistview" android:layout_width="match_parent" android:layout_height="match_parent" >    </ExpandableListView>

下面我们实现一个简单的好友列表,熟悉一下ExpanableListView的用法:
显示好友列表的实体类FriendsList

import java.util.ArrayList;public class FriendsList {    private String listName;    private ArrayList<Friends> friends;    public FriendsList(String listName, ArrayList<Friends> friends) {        this.listName = listName;        this.friends = friends;    }    public String getListName() {        return listName;    }    public void setListName(String listName) {        this.listName = listName;    }    public ArrayList<Friends> getFriends() {        return friends;    }    public void setFriends(ArrayList<Friends> friends) {        this.friends = friends;    }}

点击分组后显示的好友实体类Friends

public class Friends {    private int touxiang;    private String friendName;    private String sign;    public Friends(int touxiang, String friendName, String sign) {        this.touxiang = touxiang;        this.friendName = friendName;        this.sign = sign;    }    public int getTouxiang() {        return touxiang;    }    public void setTouxiang(int touxiang) {        this.touxiang = touxiang;    }    public String getFriendName() {        return friendName;    }    public void setFriendName(String friendName) {        this.friendName = friendName;    }    public String getSign() {        return sign;    }    public void setSign(String sign) {        this.sign = sign;    }}

用于显示好友列表的自定义布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" >    <TextView android:id="@+id/list_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="25dp"/></LinearLayout>

用于显示点击列表的好友自定义布局

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" >    <ImageView android:id="@+id/fiends_touxiang" android:layout_width="15dp" android:layout_height="15dp" android:layout_marginLeft="20dp"/>    <TextView android:id="@+id/friends_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/red" android:layout_marginLeft="10dp"/>    <TextView android:id="@+id/friends_sign" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/gray" android:layout_marginLeft="10dp" android:textSize="12sp"/></LinearLayout>

自定义适配器FriendsAdapter,继承BaseExpandableListAdapter

import java.util.ArrayList;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseExpandableListAdapter;import android.widget.ImageView;import android.widget.TextView;public class FriendsAdapter extends BaseExpandableListAdapter {    private LayoutInflater inflater;    private ArrayList<FriendsList> data;    public FriendsAdapter(LayoutInflater inflater, ArrayList<FriendsList> data) {        this.inflater = inflater;        this.data = data;    }    @Override    public Object getChild(int groupPosition, int childPosition) {        return childPosition;    }    @Override    public long getChildId(int groupPosition, int childPosition) {        return childPosition;    }    @Override    public int getChildrenCount(int groupPosition) {        return data.get(groupPosition).getFriends().size();    }    @Override    public Object getGroup(int groupPosition) {        return groupPosition;    }    @Override    public int getGroupCount() {        return data.size();    }    @Override    public long getGroupId(int groupPosition) {        return groupPosition;    }    @Override    public boolean hasStableIds() {        return false;    }    @Override    public boolean isChildSelectable(int groupPosition, int childPosition) {        return false;    }    @Override    public View getGroupView(int groupPosition, boolean isExpanded,            View convertView, ViewGroup parent) {        FriendsList list = data.get(groupPosition);        View view;        ViewHolderFriendsList vhFriendsList;        if (convertView == null) {            //缓存加载好的布局            view = inflater.inflate(R.layout.friendslist, null);            vhFriendsList = new ViewHolderFriendsList();            vhFriendsList.list_tv = (TextView) view.findViewById(R.id.list_tv);            //缓存控件的实例            view.setTag(vhFriendsList);        } else {            view = convertView;            vhFriendsList = (ViewHolderFriendsList) view.getTag();        }        vhFriendsList.list_tv.setText(list.getListName());        return view;    }    @Override    public View getChildView(int groupPosition, int childPosition,            boolean isLastChild, View convertView, ViewGroup parent) {        Friends friend = data.get(groupPosition).getFriends()                .get(childPosition);        View view;        ViewHolderFriends vhFriends;        if (convertView == null) {            view = inflater.inflate(R.layout.friends, null);            vhFriends = new ViewHolderFriends();            vhFriends.friends_touxiang = (ImageView) view                    .findViewById(R.id.fiends_touxiang);            vhFriends.friends_name = (TextView) view                    .findViewById(R.id.friends_name);            vhFriends.friends_sign = (TextView) view                    .findViewById(R.id.friends_sign);            view.setTag(vhFriends);        } else {            view = convertView;            vhFriends = (ViewHolderFriends) view.getTag();        }        vhFriends.friends_touxiang.setImageResource(friend.getTouxiang());        vhFriends.friends_name.setText(friend.getFriendName());        vhFriends.friends_sign.setText(friend.getSign());        return view;    }    class ViewHolderFriendsList {        TextView list_tv;    }    class ViewHolderFriends {        ImageView friends_touxiang;        TextView friends_name;        TextView friends_sign;    }}

MainActivity

import java.util.ArrayList;import android.os.Bundle;import android.view.LayoutInflater;import android.widget.ExpandableListView;import android.app.Activity;public class MainActivity extends Activity {    private ExpandableListView eListView;    private ArrayList<FriendsList> friendList;    private LayoutInflater inflater;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        eListView=(ExpandableListView) findViewById(R.id.expandablelistview);        initData();        inflater=getLayoutInflater();        eListView=(ExpandableListView) findViewById(R.id.expandablelistview);        FriendsAdapter adapter=new FriendsAdapter(inflater, friendList);        eListView.setAdapter(adapter);    }    /** * 初始化数据 */    private void initData() {        friendList=new ArrayList<FriendsList>();        ArrayList<Friends> friends1=new ArrayList<Friends>();        friends1.add(new Friends(R.drawable.apple, "张三", "今天很开心!"));        friends1.add(new Friends(R.drawable.grape, "李四", "今天太悲剧了!"));        friends1.add(new Friends(R.drawable.strawberry, "王五", "今天吃的很饱!"));        FriendsList friendlist1=new FriendsList("好友",friends1);        friendList.add(friendlist1);        ArrayList<Friends> friends2=new ArrayList<Friends>();        friends2.add(new Friends(R.drawable.apple, "张三", "今天很开心!"));        friends2.add(new Friends(R.drawable.grape, "李四", "今天太悲剧了!"));        friends2.add(new Friends(R.drawable.strawberry, "王五", "今天吃的很饱!"));        FriendsList friendlist2=new FriendsList("家人",friends2);         friendList.add(friendlist2);        ArrayList<Friends> friends3=new ArrayList<Friends>();        friends3.add(new Friends(R.drawable.apple, "张三", "今天很开心!"));        friends3.add(new Friends(R.drawable.grape, "李四", "今天太悲剧了!"));        friends3.add(new Friends(R.drawable.strawberry, "王五", "今天吃的很饱!"));        FriendsList friendlist3=new FriendsList("朋友",friends3);        friendList.add(friendlist3);        }   }

运行结果:

更多相关文章

  1. Android中的布局方式(二)
  2. Android(安卓)安全卫士 第二天_注意事项
  3. 自定义ListView中的分割线(转)
  4. android 五大布局经典演绎
  5. SDK3.0 组件属性
  6. 浅谈Android常用控件
  7. Android美化EditText
  8. Android(安卓)自定义实现TextView单行超出部分显示为省略号
  9. 在android中显示网络图片及查看页面源代码

随机推荐

  1. android变色状态栏
  2. Android(Java):jni写文件打印调试信息
  3. Android SDK Web SDK 接口测试总结
  4. Android UserAgent
  5. 源码角度分析Android启动流程
  6. Android最佳实践之响应灵敏性
  7. Android 手机卫士(1)
  8. Android 位置服务——BaiduLocation的使
  9. 【腾讯Bugly干货分享】Android 进程保活
  10. Android 数据库SQLite升级降级