android_高级控件_1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39019735/article/details/73699525

有蛮久没更新了今天来记录一下android的高级控件

AutoCompleteTextView(自动补全):

开发过web项目的小伙伴们应该知道在web项目中实现自动补全是有多麻烦,在安卓开发中实现自动补全真的是太舒服了!!
下面是我写的代码
xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <AutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ac_actv"
        android:completionThreshold="1"
        />
</LinearLayout>

java代码:

 
 
 
 
 
 
public class AutoActivity extends AppCompatActivity {

    private AutoCompleteTextView ac_actv;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_aotu);
        ac_actv = (AutoCompleteTextView) findViewById(R.id.ac_actv);

        //定义字符串数组
        String sname[]={"张三","张三疯","李四","李四疯"};
        //定义适配器
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,sname);
        //将适配器写到AutoCompleteTextView中
        ac_actv.setAdapter(arrayAdapter);

    }
}

还有一个相似的:
MultiAutoCompleteTextView( 该控件可支持选择多个值(在多次输入的情况下),分别用分隔符分开,并且在
每个值选中的时候再次输入值时会自动去匹配。

下面看看我写的代码:
xml布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <MultiAutoCompleteTextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/am_mu"
        android:completionThreshold="1"
        />
</LinearLayout>

java代码

public class MultiActivity extends AppCompatActivity {

    private MultiAutoCompleteTextView am_mu;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_multi);
        am_mu = (MultiAutoCompleteTextView) findViewById(R.id.am_mu);
        //定义字符串数组
        String sname[]={"张三","张三疯","李四","李四疯"};
        //设置适配器
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,sname);
        //设置分隔符
        MultiAutoCompleteTextView.Tokenizer tokenizer=new MultiAutoCompleteTextView.CommaTokenizer();
        am_mu.setTokenizer(tokenizer);
        am_mu.setAdapter(arrayAdapter);
    }
}
和AutoCompleteTextView差不蛮多,只是多了一个分隔符,分隔符默认的是逗号,也可以自定义分隔符为其他符号。
再来分享一个控件
spinner(下拉菜单)类似于web中的select下拉菜单
我用spinner实现了一个二级联动的效果,下面看下代码:
xml(布局):
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ao_sp"
        >
    </Spinner>
    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/ao_sp2"
        >
    </Spinner>

</LinearLayout>

java代码:

public class OneActivity extends AppCompatActivity {

    private Spinner spinner;
    private Spinner spinner2;
    private Map<String, List<String>> map;
    private List<String> hunan;
    private List<String> hubei;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_one);
        spinner = (Spinner) findViewById(R.id.ao_sp);
        spinner2 = (Spinner) findViewById(R.id.ao_sp2);

        //定义省份数组 provinces
        final String provinces[]={"湖南省","湖北省"};
        map = new HashMap<String,List<String>>();
        hunan = new ArrayList<String>();
        hunan.add("长沙市");
        hunan.add("株洲市");
        map.put("湖南省", hunan);
        hubei = new ArrayList<String>();
        hubei.add("武汉市");
        hubei.add("襄阳市");
        map.put("湖北省", hubei);
        //适配器
        ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,provinces);
        //设置控件的适配器
        spinner.setAdapter(arrayAdapter);
       spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            private ArrayAdapter arrayAdapter2;
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                List<String> city=map.get(provinces[position]);
                arrayAdapter2 = new ArrayAdapter(OneActivity.this,android.R.layout.simple_list_item_1,city);
                spinner2.setAdapter(arrayAdapter2);
            }
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
}
还有一个
Listview是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。

 列表的显示需要三个元素:

1.ListVeiw 用来展示列表的View。

2.适配器 用来把数据映射到ListView上的中介。

3.数据    具体的将被映射的字符串,图片,或者基本组件。

根据列表的适配器类型,列表分为三种,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter

其中以ArrayAdapter最为简单,只能展示一行字。SimpleAdapter有最好的扩充性,可以自定义出各种效果。SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方面的把数据库的内容以列表的形式展示出来。





猜你喜欢

转载自blog.csdn.net/qq_39019735/article/details/73699525
今日推荐