标签: android-spinner

设置适配器时如何避免让android spinner调用itemselectedlistener?

似乎android的Spinner类(一般可能是ListView,虽然我不确定)onItemSelected()在你调用之后调用你的OnItemSelectedListener的方法setAdapter(),即使用户还没有明确选择任何东西.

我可以看到这在许多情况下如何有用,但有时我只想onItemSelected()在实际特别选择项目时调用它.

有没有办法控制此行为并onItemSelected()在设置适配器后调用Spinner ?

android android-spinner

7
推荐指数
1
解决办法
2874
查看次数

防止微调器下拉显示

我正在使用一个微调器,其适配器是动态填充的.

  • 当有多个项目时,微调器行为是标准行为.点击后,会显示下拉列表,允许用户选择项目
  • 当只有一个项目时,我想阻止下拉列表出现并捕获click事件以执行操作.

我找不到阻止默认行为的解决方案(即显示点击中只有一个项目的下拉列表).关于如何做到这一点的任何想法?谢谢

android android-spinner

7
推荐指数
2
解决办法
9735
查看次数

Android:EditText NextFocusDown不会触发Spinner

在我的应用程序中,我有一个注册屏幕,有很多EditTexts和Spinners.我想逐一浏览"注册"字段.

所以我申请了android:imeOptions="actionNext".但它忽略了所有的Spinners.它将仅关注EditText.我也试过了setNextFocusDownId().这也忽略了纺纱厂.

   <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/reportentry11"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/numbers"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"

            android:imeOptions="actionNext"
            android:inputType="phone" 
            >
           <requestFocus/>
        </EditText>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/reportentry12"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >

            <TextView
                android:id="@+id/txt_exp"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"

                android:text="EXP:"
                android:textColor="#000000"
                android:textSize="12dp" />

            <Spinner
                android:id="@+id/spin_date"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="3"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:nextFocusDown="@+id/spin_year"
                android:text="date"
                android:textSize="12dp" />

            <Spinner
                android:id="@+id/spin_year"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_marginRight="5dp"

                  android:nextFocusDown="@+id/cvc"
                android:text="year"
                android:textSize="12dp" />
        </LinearLayout>

        <EditText
            android:id="@+id/cvc"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:hint="@string/reg_label_cvc"
            android:imeOptions="actionNext"
            android:inputType="phone" />

        <EditText
            android:id="@+id/fname"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="@string/reg_label_fname"
            android:imeOptions="actionNext" />

        <EditText
            android:id="@+id/address"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="@string/reg_label_address"
            android:imeOptions="actionNext" /> …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-edittext android-spinner

7
推荐指数
1
解决办法
6640
查看次数

单击listViewItem时,使用单选按钮显示alertDialog

我有一个listView有2个项目,2个项目是"秒"和"分钟"当我按"秒"我想要一个alertDialogBox打开en show 5,10,15,...秒.我按分钟时也一样

像这样的东西:

在此输入图像描述

但是我在实现它时遇到了麻烦,因为我不太清楚它是如何工作的.这是我的代码:

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class SettingsActivity extends Activity {

    ListView listView = (ListView) findViewById(R.id.settingsList);

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

        String[] values = new String[] { "Seconds", "Minutes" };

        // Define a new Adapter
        // First parameter - Context
        // Second parameter - Layout for the row
        // Third parameter - ID of the TextView to …
Run Code Online (Sandbox Code Playgroud)

android android-listview onitemclicklistener android-alertdialog android-spinner

7
推荐指数
1
解决办法
1万
查看次数

启动活动时如何防止onNavigationItemSelected触发?

我想在我的活动中的操作栏中使用微调器是onCreateOptionsMenu:我使用本教程来实现这种方法.我的问题是当活动是午餐时,onNavigationItemSelected方法触发,并且交换机/案例上的代码运行,我为位置0设置的活动打开.当活动是午餐时,我该怎么做以防止运行开关/案例?

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getSupportMenuInflater().inflate(R.menu.main, menu);

    SpinnerAdapter mSpinnerAdapter;
    if(Build.VERSION.SDK_INT <= 10)
    {
        mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.spinner_data,android.R.layout.simple_spinner_item);
    }
    else
    {
        mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.spinner_data,android.R.layout.simple_spinner_dropdown_item);
    }
    ActionBar.OnNavigationListener mOnNavigationListener = new ActionBar.OnNavigationListener()
    {
        @Override
        public boolean onNavigationItemSelected(int position, long itemId)
        {
            switch (position)
            {
                case 0:
                    Intent searchIntent = new Intent(ActivitySearchBusiness.this, ActivityFindBusinessCity.class);
                    startActivity(searchIntent);
                    break;
                case 2:
                    Intent dealsIntent = new Intent(ActivitySearchBusiness.this, ActivityDeals.class);
                    startActivity(dealsIntent);
                    break;
                case 3:
                    Intent eventsIntent = new Intent(ActivitySearchBusiness.this, ActivityEvents.class);
                    startActivity(eventsIntent);
                    break;
            }

            return true;
        } …
Run Code Online (Sandbox Code Playgroud)

android android-spinner actionbarsherlock

7
推荐指数
1
解决办法
3963
查看次数

微调器的OnItemClickListener

我可以通过这种方式让Spinner进入行动吧; re/values/languages.xml中的项数组

 <string-array name="languages">
    <item>Finnish</item>
    <item>French</item>
    <item>German</item>
    <item>Slovakian</item>
    <item>Polish</item>
</string-array>
Run Code Online (Sandbox Code Playgroud)

在res/menu/main.xml中

  <item
    android:id="@+id/menuSort"
    android:actionLayout="@layout/spinner"
    android:showAsAction="ifRoom"
    android:title="@string/choose"/>
Run Code Online (Sandbox Code Playgroud)

在res/layout/spinner.xml中

<Spinner
    android:id="@+id/spinner"
    android:layout_width="150dp"
    android:layout_height="wrap_content" 
    android:entries="@array/languages"/>
Run Code Online (Sandbox Code Playgroud)

最后活动课;

 public class Base_Activity extends Activity {

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    final Spinner spinner = new Spinner(this);
    Log.i("DEBUG1", "CHECKPOINT1");
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerArrayAdapter);
    Log.i("DEBUG2", "CHECKPOINT2");
    spinnerArrayAdapter.setDropDownViewResource(0);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

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

               String items=spinner.getSelectedItem().toString();
               Log.i("Selected item : ",items);
        }

        @Override
        public …
Run Code Online (Sandbox Code Playgroud)

java xml android android-layout android-spinner

7
推荐指数
1
解决办法
3万
查看次数

如何自定义Spinner下拉视图

是否可以自定义微调器下拉视图.默认微调器下拉视图具有适配器视图.我希望更改该视图以拥有自己的文本视图或类似的东西.

android textview android-spinner

7
推荐指数
2
解决办法
1万
查看次数

样式TextView就像一个带有appcompat v21的Spinner

我想让TextView看起来像一个带有新材质样式的微调器.

我设法使用"Widget.Material.Light.Spinner"样式,但我在AppCompat(v21)资源中找不到任何替代方案.我的xml:

<TextView
        android:id="@+id/sp_league_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        tools:text="Premier league"
        style="@android:style/Widget.Material.Light.Spinner"
        android:textColor="@android:color/white" />
Run Code Online (Sandbox Code Playgroud)

android textview android-appcompat android-spinner material-design

7
推荐指数
1
解决办法
8917
查看次数

更改Spinner弹出窗口的背景颜色

我需要更改微调器弹出窗口的颜色.这是我到目前为止所尝试的: java代码:

ArrayAdapter<Integer> adapter_year = new ArrayAdapter<Integer>(this, R.drawable.custom_spinner_holidays, year);
adapter_year.setDropDownViewResource(R.layout.customize_spinner);
Run Code Online (Sandbox Code Playgroud)

custom_spinner_holidays.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="@drawable/custom_spinner"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:singleLine="true"
    android:textColor="@android:color/white" />
Run Code Online (Sandbox Code Playgroud)

customize_spinner.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" >

    <TextView
        android:id="@+id/spinnertext"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#0193DE"
        android:textColor="#FFFFFF"
        android:textSize="18sp" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.当我点击微调器时,我收到错误.

android android-spinner

7
推荐指数
1
解决办法
8350
查看次数

如何在可搜索的微调器中使用SearchView.OnQueryTextListener()?

我正在使用第三方库创建一个可搜索的微调器.我在我的应用程序中添加了库类(SearchableListDialog,SearchableSpinner).一切都工作正常,但仍然是我面临的一个问题,例如,在搜索视图小部件中,如果我搜索Abc,我没有将结果过滤为Abc但是当点击列表视图项时,结果显示项目为ABC.这就像位置是项目的更改,但列表没有显示可搜索的结果.我不知道我哪里错了.我多次修改代码但没有得到理想的结果.

在此输入图像描述

Searchable Spinner xml代码:

 <com.example.my.currencyconverterapp.activity.SearchableSpinner
                    android:id="@+id/spinner"
                    android:layout_below="@+id/rl_currency_converterted_data"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content" />  
Run Code Online (Sandbox Code Playgroud)

这是我的片段代码,我正在为可搜索的微调器设置适配器.

countriesCustomAdapterInr = new CountriesCustomAdapterInr(getActivity(), R.layout.custom_spinner_items, arrayList,res);
        spinner.setAdapter(countriesCustomAdapterInr);
        assert spinner != null;
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                Toast.makeText(getActivity(), ""+arrayList.get(i).getFull_name()+i, Toast.LENGTH_LONG).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {}
        });  
Run Code Online (Sandbox Code Playgroud)

这是第三方SearchableSpinner类:

public class SearchableSpinner extends android.support.v7.widget.AppCompatSpinner implements View.OnTouchListener,
        SearchableListDialog.SearchableItem {

    public static final int NO_ITEM_SELECTED = -1;
    private Context _context;
    private List _items;
    private SearchableListDialog _searchableListDialog;

    private boolean _isDirty;
    private ArrayAdapter _arrayAdapter; …
Run Code Online (Sandbox Code Playgroud)

android listview android-arrayadapter android-spinner searchview

7
推荐指数
2
解决办法
2194
查看次数