喝酒不骑马的Android自学日记(9)-Spinner的实例

喝酒不骑马的Android自学日记(9)-Spinner的实例***2015年12月19日


Spinner的实例
先总结下,有关这类带数据源的View,基本思路都是一致的。


建立数据源,一般用list。然后建立适配器,分为Simple适配器和Array适配器。然后把数据源加载到适配器里,最后把适配器加载到View里。如果需要有点击事件的话,implements相应的接口,在方法里写入点击后的逻辑。


这里Spinner中的数据源list,用add.list()方法
在onItemSelected这个方法中
String cityName = adapter.getItem(position);
String cityName1 = list.get(position);
这两种方法都可以获取Spinner列表里所点击的text文本。


代码:
MainActivity.java:
public class MainActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener{


    private TextView textView;
    private Spinner spinner;
    private List<String> list;
    private ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.textView);
        spinner = (Spinner) findViewById(R.id.spinner);
        textView.setText("您现在选择的城市是沈阳");
        //1.设置数据源
        list = new ArrayList<String>();
        list.add("沈阳");
        list.add("锦州");
        list.add("大连");
        list.add("鞍山");


        //2.新建ArrayAdapter(数组适配器)
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);
        //3.adapter设置一个下拉菜单的样式
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //4.spinner加载适配器
        spinner.setAdapter(adapter);
        //5.spinner设置监听器
        spinner.setOnItemSelectedListener(this);
    }


    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String cityName = adapter.getItem(position);
        //String cityName1 = list.get(position);
        textView.setText("您现在选择的城市是" + cityName);
    }


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


    }
}




XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context="com.example.martin.study.MainActivity">


    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textColor="#ff0000"/>


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




    </Spinner>
</LinearLayout>






ProgressBar进度条
关于ProgressBar的style属性
style="?android:attr/progressBarStyleLarge"---大进度圈
如果什么都不设置默认是中进度圈
style="?android:attr/progressBarStyleSmall"---小进度圈
style="?android:attr/progressBarStyleHorizontal"---进度条


其中进度条可以是不精确显示进度,类似于过场动画表示正在加载
也可以是精确显示进度,可以按百分比形式呈现




现在想在标题栏里添加进度条。但是出了点问题,现版本开发包,说是默认继承AppcompatActivity,但是用不了
RequestWindowFeature(Window.FEATURE_PROGRESS);
RequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
如果继承Activity,标题栏又没有了。查了一晚上,不知道怎么解决。明天再查查。


2015年12月20日
------------------------------------------------------------
发布了19 篇原创文章 · 获赞 1 · 访问量 8247
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览