Android高级控件01

来源:互联网 发布:linux tail 100f 编辑:程序博客网 时间:2024/04/28 02:24

1.AutoCompleteTextView 自动补全文本框:


下面说一下 简单的一个自动补全:

activity_main:

<AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/actv_main_auto"
        android:completionThreshold="1"  //表示当你输入第一个字符时就会弹出提示:
        />

MainActivity:

 AutoCompleteTextView autoCompleteTextView= (AutoCompleteTextView) findViewById(R.id.actv_main_auto);

  //获得字符串数组:这是我自动补全中的一些资料:
        String data []=getResources().getStringArray(R.array.data); 

在values文件夹的Strings下面:

 <string-array name="data">
        <item>张三峰</item>
        <item>Fire</item>
        <item>I Got You</item>
        <item>Inside Out</item>
        <item>East Of Eden</item>
        <item>Battle Scars</item>
        <item>Counting Star</item>
        <item>Five Hundred Miles</item>
        <item>All we know</item>
        <item>Paris</item>
        <item>Roses</item>
        <item>Dont Let Me Down</item>
        <item>Homesike</item>
        <item>Wannabe</item>
    </string-array>

 //适配器: 布局你也可以用系统自带的布局:
        ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actve,data);

//给控件设置配置器:
        autoCompleteTextView.setAdapter(adapter);

接下来 ,就可以直接在界面的文本框里输入就可以出现自动补全的功能:

   MultiAutoCompleteTextView,是 AutoCompleteTextView的加强版,一时就是可以在文本框选了一个之后,再选一个,

与上面代码基本一样,只需要再加上:

 //设置多个自动完成文本框的分隔符:默认字符是;  ,
        MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer();
       multiautoCompleteTextView.setTokenizer(tokenizer);


2.Spinner 下拉框:下面给大家说一下用下拉框实现的简单的二级联动:

activity_second   layout布局文件':

<Spinner
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/sp_second_spinner01"
    >
</Spinner>
    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sp_second_spinner02"
        >

    </Spinner>



SecondActivity中:

public class SecondActivity extends AppCompatActivity {


    private Spinner spinner1;
    private Spinner spinner2;
    private String sheng;
    private Map<String, String[]> mp;
//这是secondactivity继承之后要重写的方法:
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);  //加载界面


        spinner1 = (Spinner) findViewById(R.id.sp_second_spinner01);
        spinner2 = (Spinner) findViewById(R.id.sp_second_spinner02);


        //获得省份:
        final String province []=getResources().getStringArray(R.array.Province);
        //获得市区:
        String hunan [] = getResources().getStringArray(R.array.hunan);
        String guangxi [] = getResources().getStringArray(R.array.guangxi);
        String guangdong []= getResources().getStringArray(R.array.guangdong);
        String zhejiang []= getResources().getStringArray(R.array.zhejiang);
        //配置器: 这是我的布局:你可以使用的系统布局:
        ArrayAdapter adapter=new ArrayAdapter(this,R.layout.item_actve,province);

我的item_actve布局文件:

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00ff1e"
    android:textColor="#ffffff"
    >


</TextView>

        //给控件添加配置器:
        spinner1.setAdapter(adapter);

        //将他们放入map里面:
        mp = new HashMap<>();

        mp.put(province[0], hunan);
        mp.put(province[1], guangxi);
        mp.put(province[2], guangdong);
        mp.put(province[3], zhejiang);


        //给spinner设置选择事件
        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
              sheng=province[position];
              geishi(sheng);
            }


            @Override
            public void onNothingSelected(AdapterView<?> parent) {


            }
        });

    }
public void geishi(String sheng){


    Toast.makeText(SecondActivity.this,"省份:"+sheng,Toast.LENGTH_SHORT).show();
            String shi []=mp.get(sheng);
        //配置器:
        ArrayAdapter adapter2=new ArrayAdapter(this,R.layout.item_actve,shi);
        //给控件添加配置器:
        spinner2.setAdapter(adapter2);

}

这是我values里面Strings的一些文件:二级联动所用到的资料:

   <string-array name="Province">
        <item>湖南省</item>
        <item>广西省</item>
        <item>广东省</item>
        <item>浙江省</item>
    </string-array>


    <string-array name="hunan">
    <item>长沙市</item>
    <item>株洲市</item>
    <item>湘潭市</item>
    <item>邵阳市</item>
    <item>衡阳市</item>
    <item>永州市</item>
    <item>岳阳市</item>
</string-array>


    <string-array name="guangxi">
        <item>南宁市</item>
        <item>桂林市</item>
        <item>全州市</item>
        <item>北海市</item>
        <item>梧州市</item>
        <item>柳州市</item>
        <item>防城港市</item>
    </string-array>


    <string-array name="guangdong">
        <item>广州市</item>
        <item>深圳市</item>
        <item>佛山市</item>
        <item>中山市</item>
        <item>潮州市</item>
        <item>东莞市</item>
        <item>龙华市</item>
    </string-array>

    <string-array name="zhejiang">
        <item>杭州市</item>
        <item>舟山市</item>
        <item>金华市</item>
        <item>宁波市</item>
        <item>温州市</item>
        <item>嘉兴市</item>
        <item>湖州市</item>
    </string-array>


3.ListView:

 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

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

MainActivity中的代码:

//获得控件

     ListView listView= (ListView) findViewById(R.id.lv_main_listview);

//设置数据:
 String titles[]={"愤怒的老鸟","Tomcat","KFC","大黑牛","旺财","中国龙","北京烤鸭","蜡笔小新","7秒小金鱼","九尾狐"};

//设置适配器:

        ArrayAdapter adapter2=new ArrayAdapter(this,R.layout.item_actv,titles);

//给控件设置适配器:

   listView.setAdapter(adapter);

注意:现在的listview只是一排字符,如果在字符的前面加一些图片,则需要用到SimpleAdapter 简单适配器:

下面来说一下简单适配器

这些是我的项目中的一些图片:

int images[]={R.drawable.bird,R.drawable.cat,R.drawable.chicken,R.drawable.cow,R.drawable.dog,R.drawable.dragon,R.drawable.duck,R.drawable.elephant,R.drawable.fish,R.drawable.fox};

     //集合:将图片与标题放入集合中:

      List<Map<String,Object>> list=new ArrayList<>();
        for (int i = 0; i < titles.length; i++) {
            Map<String,Object> mp=new HashMap<>();
            mp.put("image",images[i]);
            mp.put("title",titles[i]);
            list.add(mp);
        }

  //设置简单配置起=器   下面用到的是系统自带的布局:
        SimpleAdapter simpleAdapter=new SimpleAdapter(this,list,android.R.layout.activity_list_item,new String[]{"image","title"},new int[]{android.R.id.icon,android.R.id.text1});
      //给listview设置简单配置器:
        listView.setAdapter(simpleAdapter);

     //给listview设置点击事件:
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(MainActivity.this,"你选择的是:"+titles[position],Toast.LENGTH_SHORT).show();
            }
        });


好了!!!



原创粉丝点击