Android中的Spinner未选择位置0

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,则根本不打印日志,上面的代码工作正常.位置不会被调用.即使只是位置日志也没有打印出来.

这真的很奇怪我不确定为什么会这样?有人可以帮我这个吗?

谢谢!

Ell*_*ltz 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,看看是否有显着差异

希望能帮助到你