在旋转动态改变文本值 [英] Change text value dynamically in a spinner

查看:165
本文介绍了在旋转动态改变文本值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在我的应用程序使用,使其具有一个选择静态列表,例如:

I want to use a spinner in my app with a static list of choices, for example:


  • 速度

  • 高度

  • 纬度

  • 经度

所以,关于微调,当点击下拉视图出现,如果我选择的高度我想要显示的高度值,然后更新该值将微调本身(我有一个GPS服务来获得位置数据)。

So, when clicking on the spinner the drop down view appears and if I select altitude I want to display the altitude value and then update this value into the spinner itself (I've got a GPS service to get location data).

要做到这一点,我创建自己的适配器和覆盖 getView() getDropDownView()

To achieve this I create my own adapter and override the getView() and the getDropDownView():

package com.example.spinnertest;

import java.util.ArrayList;

import android.content.Context;
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 MySpinnerAdapter extends BaseAdapter {
    private Context _context;
    private ArrayList<String> _values;

    public MySpinnerAdapter(Context context, ArrayList<String> values) {
        this._context = context;
        this._values = values;
    }

    @Override
    public int getCount() {
        return _values.size();
    }

    @Override
    public Object getItem(int position) {
        return _values.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater layout = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layout.inflate(R.layout.item_spinner_value, null);
        }
        TextView valueTv = (TextView) convertView.findViewById(R.id.item_spinner_value_tv);
        return convertView;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater layout = (LayoutInflater) _context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = layout.inflate(R.layout.item_spinner_list, null);
        }
        ImageView imView = (ImageView) convertView.findViewById(R.id.item_spinner_list_iv);
        TextView textView = (TextView) convertView.findViewById(R.id.item_spinner_list_tv);
        textView.setText(_values.get(position));
        return convertView;
    }   
}

getView()我可以访问的TextView 在这里我想显示动态的价值,但我不知道如何从我的活动访问它。任何想法如何做到这一点?

In the getView() I can access the TextView where I want to display the dynamic value but I don't know how to access it from my Activity. Any idea how to do this?

我的 MainActivity.java

package com.example.spinnertest;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Spinner;

public class MainActivity extends Activity {

    private ArrayList<String> maListe = new ArrayList<String>(){{add("Altitude");add("Speed");add("Longitude");add("Latitude");}};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Spinner spi = (MySpinner)findViewById(R.id.spinner1);
        MySpinnerAdapter spiAd = new MySpinnerAdapter(getApplicationContext(), maListe);
        spi.setAdapter(spiAd);
    }
}

我没有实现我的GPS服务呢。我只是试图解决我的问题微调

I didn't implements my gps service yet. I'm just trying to solve my spinner problem.

推荐答案

尝试微调改变适配器。 OnItemSelected。

Try to change adapter in Spinner. OnItemSelected.

这篇关于在旋转动态改变文本值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆