我正在寻找一个明确的答案,但这是我第一次使用Spinners,因为我对Android很新,所以按照其中一个教程编写下面的代码。请注意,它不是完整的类,因为它很长,但这应该足以让你们知道发生了什么。 所以基本上,我试图从SQLLite数据库中提取数据,然后将分隔的字符串数组中的字符串放入textviews,同时将它们添加到线性布局中。我想根据用户选择过滤数据。但是第一步,我只是试图在第一个选项中拉出所有数据,即在Spinner中选择“All”。现在,我注意到的一件事是,当我添加一个Toast(你可以在下面的代码中看到它评论)时,它确实在应用程序启动时显示Toast msg,从那时起,Spinner没有响应我的选择。我基本上有编辑方法,我编辑数据,然后尝试选择“全部”选项,看它是否拉新的更新数据,但它没有。另外,需要注意的重要一点是,我的LogCat干净无误!因此,我不知道发生了什么......任何帮助都将受到高度赞赏!谢谢!
MainActivity.java
public class MainActivity extends Activity implements OnItemSelectedListener{
Spinner itemSpinner;
ArrayAdapter<String> myArrayAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get references to UI widgets
final EditText myEditText = (EditText)findViewById(R.id.myEditText);
final LinearLayout myLayout = (LinearLayout) findViewById(R.id.itemListLayout);
String[] options = {"All", "Active", "Expired"};
itemSpinner = (Spinner) findViewById(R.id.item_spinner);
myArrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, options);
itemSpinner.setAdapter(myArrayAdapter);
itemSpinner.setOnItemSelectedListener(MainActivity.this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
int position = itemSpinner.getSelectedItemPosition();
LinearLayout anotherLayout = (LinearLayout) findViewById(R.id.itemListLayout);
switch(position)
{
case 0:
//Display all existing tasks on launch
ToDoListDB info = new ToDoListDB(MainActivity.this);
info.open();
String data = info.getData();
info.close();
//Split the List item string into individual strings
String delim = "[\\n]+";
String[] items = data.split(delim);
List<TextView> itemsList = new ArrayList<TextView>(items.length);
for(int i = 0; i < items.length; i++)
{
TextView anItem = new TextView(MainActivity.this);
anItem.setText(items[i]);
anItem.setTextColor(getResources().getColor(R.color.text_color));
anItem.setBackgroundResource(R.drawable.textviewback);
anItem.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
itemsList.add(anItem);
anotherLayout.addView(itemsList.get(i));
}
break;
case 1:
break;
case 2:
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
XML文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="10" >
<EditText
android:id="@+id/myEditText"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:background="#DDD"
android:hint="Enter a list item"
android:textColor="#D00" />
<Spinner
android:id="@+id/item_spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"/>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="8" >
<LinearLayout
android:id="@+id/itemListLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#000">
</LinearLayout>
</ScrollView>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2">
<Button
android:id="@+id/bEditItem"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_margin="10dp"
android:background="@drawable/buttonback"
android:text="Edit Task"
android:textStyle="bold"
android:layout_weight="1" />
<Button
android:id="@+id/bExit"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_margin="10dp"
android:background="@drawable/buttonbackred"
android:text="Exit"
android:textStyle="bold"
android:layout_weight="1" />
</LinearLayout>
</LinearLayout>