【问题标题】:How to display spinner along with count of items in each spinner如何显示微调器以及每个微调器中的项目数
【发布时间】:2017-04-10 19:58:36
【问题描述】:

我有 2 个微调器..第一个微调器显示城市,第二个微调器显示基于微调器 1 上选择的城市的区域。 例如,如果孟买市有 5 个区域……我的第一个旋转器应该显示孟买(5),其他城市也是如此。 这是我的代码:

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.Toast;


public class SpinnerActivity extends Activity implements OnItemSelectedListener  {



    Spinner spinnerCity;
   Spinner spinnerArea;
    AutoCompleteTextView auto_search;
    String city[];
    ImageView img_search_button;
    String count;


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        spinnerCity = (Spinner) findViewById(R.id.spinnerCity);

        // spinnerArea = (Spinner) findViewById(R.id.spinnerArea);
        ArrayAdapter<CharSequence> countryAdapter = ArrayAdapter.createFromResource(this, R.array.city_array, android.R.layout.simple_spinner_item);
        countryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        spinnerCity.setAdapter(countryAdapter);

         spinnerCity.setOnItemSelectedListener(this);



        auto_search = (AutoCompleteTextView) findViewById(R.id.auto_search);
        img_search_button = (ImageView) findViewById(R.id.img_search_button);
        // autoSearch Adapter
        city = getResources().getStringArray(R.array.city_array);
//test 19 jan
        int j = 0;

        for (int i = 0; i < city.length; i++) {

            String item = city[i];
            if (item instanceof CharSequence) {
                //text.setText((CharSequence)item);
                j++;

            } else {

            }
        }
        String outletsTemp[] = new String[j];
        j = 0;
        for (int i = 0; i < city.length; i++) {

            String item = city[i];
            if (item instanceof CharSequence) {
                //text.setText((CharSequence)item);
                outletsTemp[j] = item;
                j++;
                System.out.println(item);
            } else {
                //text.setText(item.toString());
                System.out.println(item + "test");
                //outletsTemp[i] = "test";
            }
        }
        city = new String[outletsTemp.length];
        city = outletsTemp;


        ArrayAdapter<CharSequence> outletList = new ArrayAdapter<CharSequence>(this, R.layout.spinner_search, city);
        outletList.setDropDownViewResource(android.R.layout.select_dialog_singlechoice);
        //AutoCompleteAdapter  outletList = new AutoCompleteAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,modelData.outletList);
        auto_search.setAdapter(outletList);
        auto_search.setThreshold(1);

        auto_search.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

                inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

                String selection = (String) parent.getItemAtPosition(position);
                int loc = -1;

                for (int i = 0; i < city.length; i++) {
                    if (city[i].equals(selection)) {
                        loc = i;
                        break;
                    }
                }
                System.out.println("Position " + loc);
               /* modelData.shopPosition = pos;
                spinner_outlets.setSelection(modelData.shopPosition);*/
                spinnerCity.setSelection(loc);
                auto_search.setVisibility(View.GONE);
                spinnerCity.setVisibility(View.VISIBLE);

                /*InputMethodManager in = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                in.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);*/


            }
        });
        auto_search.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {


                final int DRAWABLE_LEFT = 0;
                final int DRAWABLE_TOP = 1;
                final int DRAWABLE_RIGHT = 2;
                final int DRAWABLE_BOTTOM = 3;


                if (event.getRawX() >= (auto_search.getRight() - auto_search.getCompoundDrawables()[DRAWABLE_RIGHT].getBounds().width())) {
                    // your action here
                    auto_search.setText("");
                    return true;
                }

                return false;
            }
        });
        // autoSearch END


        img_search_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (spinnerCity.getVisibility() == View.VISIBLE) {
                    auto_search.setVisibility(View.VISIBLE);
                    spinnerCity.setVisibility(View.GONE);
                } else {
                    auto_search.setVisibility(View.GONE);
                    spinnerCity.setVisibility(View.VISIBLE);
                }


            }
        });
        //Intent intent1 = getIntent();

       // count= intent1.getStringExtra("COUNT").toString();
    }

    @Override

    public void onItemSelected(AdapterView<?> parent, View arg1, int pos,

                               long arg3) {
//int num=parent.getCount();
       String value= parent.getItemAtPosition(pos).toString();

        if (value.equals("Chennai")) {


            Intent intent = new Intent(this, Spin2Activity.class);
            intent.putExtra("VALUE", value);
            startActivity(intent);
        } else if (value.equals("Mumbai")) {


            Intent intent = new Intent(this, Spin2Activity.class);
            intent.putExtra("VALUE", value);
            startActivity(intent);

        } else if (value.equals("Calcutta")) {

            Intent intent = new Intent(this, Spin2Activity.class);
            intent.putExtra("VALUE", value);
            startActivity(intent);

        }

    }



    @Override

    public void onNothingSelected(AdapterView<?> arg0) {

    }

Spinner2Activity

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;

public class Spin2Activity extends AppCompatActivity{
    Spinner spinnerArea;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spin2);
//        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
//        setSupportActionBar(toolbar);
        Intent intent = getIntent();

        String value= intent.getStringExtra("VALUE");
        spinnerArea = (Spinner) findViewById(R.id.spinnerArea);
        if (value.equals("Chennai")) {


            ArrayAdapter<CharSequence> adapter = ArrayAdapter

                    .createFromResource(this, R.array.area_chennai,

                            android.R.layout.simple_spinner_dropdown_item);
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinnerArea.setAdapter(adapter);
            // int count= spinnerArea.getAdapter().getCount();
            Toast.makeText(getApplicationContext(), "Total number of Items are:" + spinnerArea.getAdapter().getCount(), Toast.LENGTH_LONG).show();


        }else if (value.equals("Mumbai")){
            ArrayAdapter<CharSequence> adapter = ArrayAdapter

                    .createFromResource(this, R.array.area_mumbai,

                            android.R.layout.simple_spinner_dropdown_item);



            spinnerArea.setAdapter(adapter);

            // int count= spinnerArea.getAdapter().getCount();
            Toast.makeText(getApplicationContext(), "Total number of Items are:" + spinnerArea.getAdapter().getCount(), Toast.LENGTH_LONG).show();
        }else if(value.equals("Calcutta")){
            ArrayAdapter<CharSequence> adapter = ArrayAdapter

                    .createFromResource(this, R.array.area_calcutta,

                            android.R.layout.simple_spinner_dropdown_item);


            spinnerArea.setAdapter(adapter);
        }

}

}

我的 spinner1 的 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:layout_weight="2"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp" android:layout_weight="1" android:orientation="horizontal">
        <Spinner

            android:id="@+id/spinnerCity"
            style="?android:attr/spinnerItemStyle"
            android:layout_width="200dp"
            android:spinnerMode="dialog"
            android:layout_height="60dp"

            android:layout_weight="3"
            android:layout_centerHorizontal="true"

            android:layout_marginTop="8dp"

            />
       <!-- <ListView xmlns:android="http://schemas.android.com/apk/res/android"

            android:id="@+id/spinnerCity"
            android:layout_width="200dp"
            android:layout_height="60dp"
            android:layout_weight="3"
            android:layout_marginTop="8dp"
            />-->

        <AutoCompleteTextView android:id="@+id/auto_search" android:visibility="gone"
            android:layout_width="10dp"
            android:layout_height="60dp" android:textSize="20dp"
            android:layout_weight="3"  android:drawableRight="@android:drawable/ic_delete"/>
        <ImageView
            android:id="@+id/img_search_button"
            android:layout_marginTop="8dp"
            android:layout_width="0dp"
            android:layout_height="60dp"
            android:layout_weight="3"
            android:src="@android:drawable/ic_search_category_default" android:padding="3dp"/>
    </LinearLayout>


</LinearLayout>

我的字符串值::

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Spinner</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Hello world!</string>
    <string name="title_activity_main">MainActivity</string>
    <string name="Login">Login</string>

    <string-array name="city_array">
        <item>Delhi</item>
        <item>Chennai</item>
        <item>Mumbai</item>
        <item>Calcutta</item>
    </string-array>
    <string-array name="area_chennai">
        <item>T Nagar</item>
        <item>Mount Road</item>
        <item>Mylapore</item>
        <!--<item>Vadapalani</item>-->
    </string-array>
    <string-array name="area_mumbai">
        <item>Andheri</item>
        <item>Bandra</item>
        <item>Dadar</item>
        <item>Matunga</item>
    </string-array>
    <string-array name="area_calcutta">
        <item>Barasat</item>
        <item>Dum Dum</item>
        <item>Kanchrapara</item>
        <item>Titagarh</item>
    </string-array>


    <string name="title_activity_login">App</string>
    <string name="title_activity_spin2">Spin2Activity</string>

</resources>

最后告诉我如何显示微调器以及每个微调器中的项目数

输出: spinner1 应在下拉菜单中显示为

孟买(5) 加尔各答(4) 钦奈(4)

然后 spinner 2 显示每个 spinner1 项目中存在的项目

【问题讨论】:

    标签: android android-layout count spinner


    【解决方案1】:

    您可以编写一个自定义数组适配器,其布局包含文本和计数,并通过自定义适配器中的 getDropDownView 方法填充两者。

    【讨论】:

    • 如果项目的位置 != 0 则隐藏计数文本,以防止计数与行项目一起显示。
    • 感谢您的回复...你能用示例代码解释一下吗@Sudheesh Mohan
    • @s.vijay 请参考androidexample.com/…
    • 感谢您的回复....我还需要通过单击微调器中的每个项目来显示列表视图及其子项目的数量,您能否详细说明我的解决方案@SudheeshMohan
    • @s.vijay 你想在哪里显示计数?单击微调器时是否要显示计数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多