似乎android的Spinner类(一般可能是ListView,虽然我不确定)onItemSelected()在你调用之后调用你的OnItemSelectedListener的方法setAdapter(),即使用户还没有明确选择任何东西.
我可以看到这在许多情况下如何有用,但有时我只想onItemSelected()在实际特别选择项目时调用它.
有没有办法控制此行为并onItemSelected()在设置适配器后调用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) 我有一个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
我想在我的活动中的操作栏中使用微调器是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) 我可以通过这种方式让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) 是否可以自定义微调器下拉视图.默认微调器下拉视图具有适配器视图.我希望更改该视图以拥有自己的文本视图或类似的东西.
我想让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
我需要更改微调器弹出窗口的颜色.这是我到目前为止所尝试的: 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)
但它不起作用.当我点击微调器时,我收到错误.
我正在使用第三方库创建一个可搜索的微调器.我在我的应用程序中添加了库类(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