android创建下拉列表

标签 android android-layout

我怎样才能在 android 上制作下拉列表?我用谷歌搜索并找到了很多结果,但是来自 android 官方网站,这是被禁止的

我发现了一个名为 List View

我该如何使用它(如果它是我必须构建的正确组件)

我将添加这些行,因为 stackoverflow 不允许我提交问题

<tag status="remove" because="can't add question"/>
int i=0; while(i=1;i<4;i++)
system.out.println("sorry");
<?Php
$word="sorry";
echo $word;
?>

添加代码后

public class getCellsFromServer extends
            AsyncTask<String, Integer, String[]> {
        ProgressDialog dialog;

        @Override
        protected void onCancelled() {
            super.onCancelled();
        }

        @Override
        protected void onPostExecute(String[] results) {
            super.onPostExecute(results);
            final MyData items [] = new MyData[results.length];
            for(int i=0;i<results.length;i++){
                items[i]= new MyData(results[i],results[i]);
            }
            ArrayAdapter<MyData> adapter = new ArrayAdapter<MyData>(this,
                    android.R.layout.simple_spinner_item, items);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);

        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            dialog = new ProgressDialog(AnswerQuestion.this);
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            dialog.setMax(100);
            dialog.show();
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            dialog.incrementProgressBy(values[0]);
        }

        @Override
        protected String[] doInBackground(String... params) {
            for (int i = 0; i < 20; i++) {
                publishProgress(5);
                try {
                    Thread.sleep(88);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            dialog.dismiss();
            URI website;
            try {
                HttpClient client = new DefaultHttpClient();
                website = new URI(
                        "http://10.0.2.2:8080/LocalizedBasedComptitionServer/GetCells");
                HttpPost request = new HttpPost();
                request.setURI(website);
                HttpResponse response = client.execute(request);
                ObjectInputStream in = new ObjectInputStream(response.getEntity().getContent()); //Android
                String commingArray ="";
                int c=0;
                c=in.read();
                while(c!=-1){
                    commingArray+=(char)c;
                    c=in.read();
                }
                String[] ar = commingArray.split(",");
                return ar;
            } catch (URISyntaxException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }
        class MyData {
            public MyData(String spinnerText, String value) {
                this.spinnerText = spinnerText;
                this.value = value;
            }

            public String getSpinnerText() {
                return spinnerText;
            }

            public String getValue() {
                return value;
            }

            public String toString() {
                return spinnerText;
            }

            String spinnerText;
            String value;
        }

    }

最佳答案

我有一个使用常量的例子,希望这对你有帮助

常量

public static final CharSequence[] DAYS_OPTIONS  = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

微调器的设置

ArrayAdapter<String> adapter = new ArrayAdapter<String> (this, android.R.layout.simple_spinner_item, DAYS_OPTIONS);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

希望这能解决您的问题。


更多解释示例

Activity 代码

public class SpinnerTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Spinner s = (Spinner) findViewById(R.id.spinner);
        //Prepar adapter 
        //HERE YOU CAN ADD ITEMS WHICH COMES FROM SERVER.
        final MyData items[] = new MyData[3];
        items[0] = new MyData("key1", "value1");
        items[1] = new MyData("key2", "value2");
        items[2] = new MyData("key3", "value3");
        ArrayAdapter<MyData> adapter = new ArrayAdapter<MyData>(this,
                android.R.layout.simple_spinner_item, items);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s.setAdapter(adapter);
        s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                MyData d = items[position];

                //Get selected value of key 
                String value = d.getValue();
                String key = d.getSpinnerText();
            }

            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }

    class MyData {
        public MyData(String spinnerText, String value) {
            this.spinnerText = spinnerText;
            this.value = value;
        }

        public String getSpinnerText() {
            return spinnerText;
        }

        public String getValue() {
            return value;
        }

        public String toString() {
            return spinnerText;
        }

        String spinnerText;
        String value;
    }
}

*布局为*

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <Spinner android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
        android:prompt="@string/item_prompt"
    />


</LinearLayout>

这里是 SO how to add items to the spinner dynamically in android?

关于android创建下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11256209/

相关文章:

android - 在 Android 中编写基于订阅的应用程序的方法

android - 如何通过 adb 获取 Android getExternalStorageDirectory 文件夹?

java - Android:继承的 View 比例

android - float 操作按钮和 RecyclerView

android - 如何在 Eclipse 中构建 APK 文件?

android - 如何在 SIM 卡上的 Android 和 Java Card Applet 之间进行通信(有或没有 RIL 库)?

java - SQLite 查询的速度/昂贵与列表行上 "in-set"图标的 List.contains()

android - 我在 RelativeLayout 中的包含有什么问题?

android - imageView 中的圆角

android - 在行中具有多个 TextView 的自定义 TableLayout