Android Spinner SomeTime没有用

时间:2015-01-08 19:47:57

标签: java android listview android-listview android-spinner

我正在研究我在Spinner和ListView之间玩的Android应用程序。 我在Spinner中有几个值,当我从Spinner中选择值时,我正在做什么,将它添加到ListView中,然后从Spinner中删除它们。显然它的工作正常,但对于某些情况OnItemSelected()没有触发。 例如,我在Spinner中有四个值

 - Spinner                        ListView

   FirstValue                      Empty at start 
   SeccondVlaue
   ThirdValue 
   Forth Value

我选择了First Value,事件触发和从Spinner中删除的值并添加到ListView中,它工作得非常好。所以现在spinner和listview的情况是

Spinner                        ListView

                            FirstValue
SeccondVlaue
ThirdValue 
Forth Value

现在当我再次从微调器中选择“SecondValue”时,事件没有触发并且无法从微调器中删除值,而如果我选择了“ForthValue”,则事件将触发并且值将添加到列表视图中。同样,它也不适用于其他一些场景。我不知道为什么它不起作用。这是我的活动代码。

package com.example.hostel_finance_managment;

import java.util.ArrayList; import java.util.List;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

public class Add_Budget_Activity extends Activity {
    private Spinner spinner1;
    public ArrayList<String> Spinner_arraylist;
    public ArrayAdapter<String> Spinner_Adapter;
    public List<Members> memobject;

    int counter=0;
    int  clickCounter=0;

    public ListView list;
    public ArrayAdapter<String> List_Adapter;
    public ArrayList<String> arrayListView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_budget);
        list = (ListView) findViewById(R.id.add_budget_list);
        spinner1 = (Spinner) findViewById(R.id.spinner1);

        Spinner_arraylist = new ArrayList<String>();
        arrayListView = new ArrayList<String>();

        memobject=Members.listAll(Members.class);
        Spinner_arraylist.add("Select your Value");

        for(int i=0;i<memobject.size();i++)
        {
          Spinner_arraylist.add(memobject.get(i).getName());
     //     Toast.makeText(getApplicationContext(), " Name "+memobject.get(i).getName()+" Position = "+i, Toast.LENGTH_SHORT).show();

        }

        Spinner_Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,Spinner_arraylist);
        Spinner_Adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner1.setAdapter(Spinner_Adapter);   


        spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {                
             Toast.makeText(getApplicationContext(), "Listener is fire",Toast.LENGTH_SHORT).show();

            if(!(counter==0))
                {   
                Toast.makeText(getApplicationContext(), "Selected Name is  ="+spinner1.getSelectedItem().toString(),Toast.LENGTH_SHORT).show();

//             Toast.makeText(getApplicationContext(), "Seleected Name is ="+memobject.get(position-1).getName(), Toast.LENGTH_SHORT).show();
               arrayListView.add(spinner1.getSelectedItem().toString());
                list.setAdapter(List_Adapter);
               Spinner_arraylist.remove(spinner1.getSelectedItem().toString());
                }
                counter=1;
               }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });  
        List_Adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, arrayListView)
                {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                  View view = super.getView(position, convertView, parent);
                  TextView text = (TextView) view.findViewById(android.R.id.text1);
                  text.setTextColor(Color.BLACK);
                  return view;
              }
            };

}
}

1 个答案:

答案 0 :(得分:0)

在移除或添加活动适配器下的ArrayList元素后,需要调用myAdapter.notifyDataSetChanged()