第七章 —高级组件《二》

来源:互联网 发布:c语言的预处理命令 编辑:程序博客网 时间:2024/06/03 17:39

AutoCompleteTextView自动输入文本框

activity_main.xml:<AutoCompleteTextView        android:id="@+id/actv"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:completionThreshold="1"        android:dropDownHeight="50dp"        android:hint="输入" /> item_actv.xml: <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@drawable/ic_launcher" />    <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content" >    </TextView> JAVA代码中:    // 数据源    String[] data = { "zhangsan", "lisi", "wangwu", "zhaoliu", "tianqi",            "wangba", "xiaojiujiu", "李四", "李五", "李六" };    AutoCompleteTextView actv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 显示        actv = (AutoCompleteTextView) findViewById(R.id.actv);        // 适配器        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                R.layout.item_actv, R.id.tv, data);        // 所有需要适配器的view        actv.setAdapter(adapter);    }

MultiAutoCompleteTextView自动完成文本框

xmlzh:<MultiAutoCompleteTextView        android:id="@+id/mactv"        android:layout_width="match_parent"        android:layout_height="wrap_content" /> JAVA代码中:    MultiAutoCompleteTextView mactv;    // 数据源    String[] data = { "zhangsan", "lisi", "wangwu", "zhaoliu", "tianqi",            "wangba", "xiaojiujiu", "李四" };    ArrayAdapter<String> adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mactv = (MultiAutoCompleteTextView) findViewById(R.id.mactv);        adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_list_item_1, data);        mactv.setAdapter(adapter);        // CommaTokenizer实现好了的 以逗号分隔        mactv.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());    }

Spinner列表选择框

<Spinner        android:id="@+id/spinner"        android:layout_width="wrap_content"        android:layout_height="wrap_content" /> <string-array name="select">        <item>结婚证</item>        <item>身份证</item>        <item>军官证</item>        <item>单身证</item>    </string-array>    Spinner spinner;    String[] array = { "", "普快", "空调", "特快", "动车", "高铁" };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        spinner = (Spinner) findViewById(R.id.spinner);        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,                android.R.layout.simple_spinner_item, array);        spinner.setAdapter(adapter);        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {            @Override            public void onItemSelected(AdapterView<?> parent, View view,                    int position, long id) {                // position 就是选中的条目,从0开始                String zheng = getResources().getStringArray(R.array.select)[position];                Toast.makeText(getBaseContext(), zheng, Toast.LENGTH_SHORT)                        .show();            }            @Override            public void onNothingSelected(AdapterView<?> parent) {                // 从没触发过                Log.e("TAG", "------------->>没有选择");            }        });    }

网格视图GridView

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <LinearLayout         android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/ll1"        android:orientation="vertical"        >        <LinearLayout             android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <ImageView                 android:id="@+id/img1"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:src="@drawable/ic_launcher"/>            <TextView                 android:id="@+id/name"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="名称"/>            <ImageView                 android:id="@+id/img2"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:paddingRight="20dp"                android:src="@drawable/ic_launcher"/>        </LinearLayout>        <TextView             android:id="@+id/jieshao"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:text="介绍"/>    </LinearLayout></RelativeLayout><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"    tools:context="com.example.listview.MainActivity" >    <ListView        android:id="@+id/lv"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true" >    </ListView></RelativeLayout>import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.GridView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {    String[] name={"锁定手机","手机杀毒","解锁手机","手机上网"};    String[] jieshao={"专门处理锁定手机相关功能","专门处理手机杀毒相关功能","专门处理解锁手机相关功能","专门处理手机上网相关功能"};    int[] ids={R.drawable.img01,R.drawable.img02,R.drawable.img03,R.drawable.img04};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        GridView spinner = new GridView(this);        spinner.setNumColumns(2);        setContentView(spinner);        List<HashMap<String, Object>> date=new ArrayList<HashMap<String,Object>>();        for (int i = 0; i < 3; i++) {            HashMap<String, Object> map=new HashMap<String, Object>();            map.put("id", ids[i]);            map.put("name", name[i]);            map.put("jieshao", jieshao[i]);            date.add(map);        }        SimpleAdapter sAdapter=new SimpleAdapter(this, date, R.layout.item_setting,                new String[] {"id","name","jieshao"},                new int[] {R.id.img1,R.id.name,R.id.jieshao} );        spinner.setAdapter(sAdapter);    }}

列表视图ListView

<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent" >    <ImageView        android:id="@+id/img"        android:layout_width="80dp"        android:layout_height="100dp"        android:src="@drawable/ic_launcher" />    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_toRightOf="@id/img"        android:orientation="vertical"        android:padding="10dp" >        <TextView            android:id="@+id/name"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="名称" />        <TextView            android:id="@+id/content"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:layout_marginTop="10dp"            android:text="简介" />    </LinearLayout></RelativeLayout><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"    tools:context="com.example.listview1.MainActivity" >   <ListView        android:id="@+id/lv"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:layout_alignParentLeft="true"        android:layout_alignParentTop="true" >    </ListView></RelativeLayout>import java.util.ArrayList;import java.util.HashMap;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity {    String[] names = { "范冰冰", "李晨", "王宝强" };    String[] contents = {            "简介:范冰冰,1981年9月16日生于山东青岛,华语影视女演员、歌手、制片人。",            "简介:李晨,1978年11月24日出生于北京市,中国内地影视男演员、监制、赛车手。",            "王宝强,1984年5月29日出生于河北省邢台市,中国内地男演员、导演。" };    int[] ids = { R.drawable.fbb, R.drawable.lichen, R.drawable.wangbaoqiang };    ListView lv;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv = (ListView) findViewById(R.id.lv);         //创建适配器        List<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();        for (int i = 0; i < 3; i++) {            HashMap<String, Object> map = new HashMap<String, Object>();            map.put("img", ids[i]); // R.id.img            map.put("name", names[i]);// R.id.name            map.put("content", contents[i]);// R.id.content            data.add(map);        }        SimpleAdapter adapter = new SimpleAdapter(this, data,                R.layout.item_lv_star,                new String[] { "img", "name", "content" }, new int[] {                        R.id.img, R.id.name, R.id.content });         lv.setAdapter(adapter);    }}

BaseAdapter类

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <TextView        android:id="@+id/tv1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="标题" />    <TextView        android:id="@+id/tv2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="内容" /></LinearLayout><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"    tools:context="com.example.lesson7_baseadapter.MainActivity" >    <ListView        android:id="@+id/lv"        android:layout_width="match_parent"        android:layout_height="match_parent" /></RelativeLayout>import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.os.Bundle;import android.widget.ListView;import com.example.lesson7_gridview_baseadapter.R;public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ListView lv = (ListView) findViewById(R.id.lv);        // 适配器        ////List<String> list = new ArrayList<String>();        List<Article> list2 = new ArrayList<MainActivity.Article>();        for (int i = 0; i < 100; i++) {            ////list.add("条目" + i);            list2.add(new Article("标题" + i, "内容" + i));        }//      MyBaseAdapter adapter = new MyBaseAdapter(this, list);        MyBaseAdapter2 adapter = new MyBaseAdapter2(this, list2);        lv.setAdapter(adapter);    }    public static class Article {        String title;        String content;        public Article(String title, String content) {            super();            this.title = title;            this.content = content;        }    }}public class MyBaseAdapter extends BaseAdapter {    private List<String> list;    private Context context;    // 数据源    public MyBaseAdapter(Context context, List<String> list) {        this.list = list;        this.context = context;    }    @Override    public int getCount() {        // 获取多少条        Log.e("TAG", list.size() + "--------------getConut");        return list.size();    }    @Override    public String getItem(int position) {        return list.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    // 最重要的方法    @Override    public View getView(int position, View convertView, ViewGroup parent) {        Log.e("TAG", position + "--------------getView");        // position 代表当前的第几项        // convertView布局重用        // parent父布局        // 一切与布局相关的初始化都需要上下文        // 只有一个组件的时候可能看不出卡        // TextView tv = new TextView(context);        // // 设置数据        // tv.setText(getItem(position));        // Log.e("TAG", "---" + (convertView == null));        // 布局重用的固定写法        if (convertView == null) {            convertView = new TextView(context);            // 口袋            convertView.setTag(position);        }        TextView tv = (TextView) convertView;        tv.setText(getItem(position));        Log.e("TAG", tv.getTag().toString());        return tv;    }}public class MyBaseAdapter2 extends BaseAdapter {    private Context context;    private List<Article> list;    public MyBaseAdapter2(Context context, List<Article> list) {        this.context = context;        this.list = list;    }    @Override    public int getCount() {        return list == null ? 0 : list.size();    }    @Override    public Article getItem(int position) {        return null;    }    @Override    public long getItemId(int position) {        return 0;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder holder;        if (convertView == null) {            convertView = View.inflate(context, R.layout.item_layout, null);            holder = new ViewHolder(convertView);            convertView.setTag(holder);        } else            holder = (ViewHolder) convertView.getTag();            holder.setData(list.get(position));            return convertView;    }    // 对于一个较复杂的布局,组件比较多    class ViewHolder// 保存的是所有的布局上的组件    {        TextView title;        TextView content;        public ViewHolder(View convertView) {            title = (TextView) convertView.findViewById(R.id.tv1);            content = (TextView) convertView.findViewById(R.id.tv2);            // convertView.setTag(this);        }        public void setData(Article a) {            title.setText(a.title);            content.setText(a.content);        }    }    // @Override    // public View getView(int position, View convertView, ViewGroup parent) {    // // 加载布局,考虑布局重用    // if (convertView == null) {    // // View的静态方法 加载视图    // convertView = View.inflate(context, R.layout.item_layout, null);    // }    // // 从一个View中获取他里面的子控件    // TextView title = (TextView) convertView.findViewById(R.id.tv1);    // TextView content = (TextView) convertView.findViewById(R.id.tv2);    // title.setText(list.get(position).title);    // content.setText(list.get(position).content);    // // 一定要注意    // return convertView;    // }}
0 0
原创粉丝点击