【发布时间】:2014-07-15 17:06:50
【问题描述】:
我想在我的应用中使用带有静态选项列表的微调器,例如:
- 速度
- 海拔高度
- 纬度
- 经度
所以,当单击微调器时,会出现下拉视图,如果我选择高度,我想显示高度值,然后将此值更新到微调器本身(我有一个 GPS 服务来获取位置数据)。
为此,我创建了自己的适配器并覆盖了getView() 和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,但我不知道如何从Activity 访问它。知道怎么做吗?
我的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 服务。我只是想解决我的微调器问题。
【问题讨论】:
-
我们可以看看你的活动和布局文件的 onCreate 方法中有什么吗?