我正在研究我在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;
}
};
}
}
答案 0 :(得分:0)
在移除或添加活动适配器下的ArrayList元素后,需要调用myAdapter.notifyDataSetChanged()
。