0

我想问一个非常笼统的问题。“如何根据微调器进行过滤?” 意思是,微调器中几乎没有选项(“教育”、“博物馆”、“餐厅”)选择“博物馆”后,它会显示一个博物馆列表。有这样的方法吗?我已经检索了这些数据,只是,我想知道 spinner 是否可以执行此功能。

我已经用谷歌搜索了它,但似乎没有找到我想要的答案,因此想征求意见是否有任何这样的来源。

问题的变化,有些相似

如果我有这个编码,并且想要检索“博物馆”、“新加坡”或“中心”,我应该如何在我的代码中进行编辑?意思是,单击微调器中的选择后,它会改变。

MainActivity.java 公共类 MainActivity 扩展 ListActivity {

    String[] Category = {
    "Singapore discovery Centre",
    "Singapore Science Centre",
    "Mint Museum",
    "Singapore Art Museum",
    "Army Museum"
};

String [] keywords = {
    "Centre",
    "Musuem",
    "Singapore",

};

Spinner s1;






    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //GridView
                setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,Category)); 

                //SpinnerView
                s1 = (Spinner) findViewById(R.id.spinner1);

                ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, keywords);
                s1.setAdapter(adapter);
                s1.setOnItemSelectedListener(new OnItemSelectedListener()
                {
                    public void onItemSelected(AdapterView<?> arg0,View arg1, int arg2, long arg3) {
                        int index = s1.getSelectedItemPosition();
                        Toast.makeText(getBaseContext(), "You have seleted item :" + keywords[index] , Toast.LENGTH_SHORT).show();
                    }
                    public void onNothingSelected(AdapterView<?>arg0) {}
                    });
                }


        public void onListItemClick(ListView parent, View v, int position,long id)
        {
            Toast.makeText(this, "You have selected " + Category[position], Toast.LENGTH_SHORT).show();
        }
        }
4

2 回答 2

0

是的,有一个名为OnItemSelectedListener的侦听器,它告诉您在微调器中选择了哪个项目,以便您可以找到选定的项目 ID,然后过滤您的适配器或您拥有的任何数据结构与该选定项目。

Spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
        })
});
于 2013-07-28T07:39:16.887 回答
0

首先你应该implement OnItemSelectedListener

Spinner sp;
    String[] strarr={"education", "musuem", "restaurant"};


ArrayAdapter<String> adapter = new ArrayAdapter<String>(filename.this,android.R.layout.simple_spinner_item,strarr);
        sp=(Spinner) findViewById(R.id.spinner1);
        sp.setAdapter(adapter);
        sp.setOnItemSelectedListener(this);

你应该覆盖

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {

        int position =sp.getSelectedItemPosition();
              //things to do
}
and 
public void onNothingSelected(AdapterView<?> arg0) {

        //things to do
    }
于 2013-07-28T07:59:22.910 回答