The*_*Man 10 android android-spinner
我创建了一个有三个项目的微调器
日常
每周
每月一次
我在我的java文件中做了以下内容:
navSpinner = new ArrayList<SpinnerNavItem>();
navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.dailyview)));
navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.weekview)));
navSpinner.add(new SpinnerNavItem(getResources().getString(R.string.monthview)));
adapter = new TitleNavigationAdapter(getActivity().getApplicationContext(), navSpinner);
mSpinner = (Spinner) rootView.findViewById(R.id.spinner);
mSpinner.setAdapter(adapter);
mSpinner.setOnItemSelectedListener(this);
Run Code Online (Sandbox Code Playgroud)
OnItemSelected方法(Implements AdapterView.OnItemSelectedListener)
public void onItemSelected(AdapterView<?> parentView, View v, int position, long id) {
Log.e("Position", "= " + position);
if (mNaviFirstHit)
{
mNaviFirstHit = false;
}
else
{
Fragment fragment = null;
switch (position) {
case 0:
Log.e("Week", "= " + position);
break;
case 1:
backspace = 1;
Log.e("Week", "= " + position);
break;
case 2:
backspace = 1;
Log.e("Week", "= " + position);
break;
default:
break;
}
}
}
public void onNothingSelected(AdapterView<?> parentView) {
}
Run Code Online (Sandbox Code Playgroud)
适配器:
public class TitleNavigationAdapter extends BaseAdapter
{
private TextView txtTitle;
private ArrayList<SpinnerNavItem> spinnerNavItem;
private Context context;
private TextView txtHeading;
private SharedPreferences pref;
public TitleNavigationAdapter(Context context, ArrayList<SpinnerNavItem> spinnerNavItem)
{
this.spinnerNavItem = spinnerNavItem;
this.context = context;
}
@Override
public int getCount()
{
return spinnerNavItem.size();
}
@Override
public Object getItem(int index)
{
return spinnerNavItem.get(index);
}
@Override
public long getItemId(int position)
{
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
LayoutInflater mInflater = (LayoutInflater)
context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item_title, null);
}
txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
txtTitle.setText(spinnerNavItem.get(position).getTitle());
txtTitle.setTextColor(context.getResources().getColor(R.color.orangeText));
txtTitle.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
pref = context.getSharedPreferences("MyPref", Context.MODE_PRIVATE);
String text = pref.getString("selectedItem", context.getResources().getString(R.string.transaction_main_gridview));
if (text.equalsIgnoreCase(convertView.getResources().getString(R.string.transaction_main_gridview)))
{
txtTitle.setText(convertView.getResources().getString(R.string.transaction_main_gridview_text));
}
else if (text.equalsIgnoreCase(convertView.getResources().getString(R.string.transaction_main_weekview)))
{
txtTitle.setText(convertView.getResources().getString(R.string.transaction_main_weekly_text));
}
else if (text.equalsIgnoreCase(convertView.getResources().getString(R.string.transaction_main_monthview)))
{
txtTitle.setText(convertView.getResources().getString(R.string.transaction_main_monthly_text));
}
return convertView;
}
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{
if (convertView == null)
{
LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.list_item_title, null);
}
txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);
txtTitle.setPadding(20, 20, 0, 20);
txtHeading = (TextView) convertView.findViewById(R.id.txtheading);
txtHeading.setVisibility(View.GONE);
txtTitle.setText(spinnerNavItem.get(position).getTitle());
return convertView;
}
}
Run Code Online (Sandbox Code Playgroud)
当我选择位置1或2(我正确地得到日志)然后从位置1或2时,如果我选择位置0,则根本不打印日志,上面的代码工作正常.位置不会被调用.即使只是位置日志也没有打印出来.
这真的很奇怪我不确定为什么会这样?有人可以帮我这个吗?
谢谢!
首先删除getApplicationContext()
adapter = new TitleNavigationAdapter(getActivity(), navSpinner);
Run Code Online (Sandbox Code Playgroud)
我也认为它被调用,但它是因为你的Log参数,而不是过滤为什么Log?,对所有行尝试这个
Log.e("Position", "= " + String.valueOf(position));
Run Code Online (Sandbox Code Playgroud)
你可以尝试设置后onitemSelectedListener重新将初始选择设置为0,看看是否有显着差异
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
3449 次 |
| 最近记录: |