我的Android应用程序中有一个微调器,并且onItemSelected()在进入活动时会自动触发其事件.
我该如何避免这种情况?
我正在使用用户对象填充我的微调器,以便稍后使用用户ID工作,但用户列表的显示显示我猜对象的地址.
所以我的问题是如何只显示对象的一个属性,在用户名的情况下,但仍然用整个对象填充微调器
User user1 = new User("user1",24);
User user2 = new User("user2",26);
// Creating adapter for spinner
List<User> users = new ArrayList<User>();
users.add(user1);
users.add(user2);
ArrayAdapter<User> dataAdapter = new ArrayAdapter<User>(this,
android.R.layout.simple_spinner_item, users);
// Drop down layout style - list view
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Spinner _EmpSpinner = null;
_EmpSpinner = (Spinner) findViewById(R.id.EmployeesSpinner);
// attaching data adapter to spinner
_EmpSpinner.setAdapter(dataAdapter);
Run Code Online (Sandbox Code Playgroud)

我问自己是否有可能将a Spinner和a 结合起来AutoCompleteTextView.基本上我想要一个AutoCompleteTextView,它显示Array我点击它时的所有条目.
有谁知道怎么做?
当旋转器下拉被解雇时,我想要抓住一个事件.当用户点击onItemSelected()中的任何项时,我们可以捕获它.但是,即使用户在下拉区域或后退按钮之外触摸,我也想抓住,因为这些也会让它消失.在我观察日志的这两个原因中,它说"尝试完成输入事件,但输入事件接收器已被处理"
我观察了源代码,这是在finishInputEvent(InputEvent事件,布尔处理)方法中从InputEventReceiver.java打印的.但这是最后一种方法,所以没有必要重写它.有人可以建议在这些情况下解除下拉时的处理方式吗?
在我目前的项目中,我已经处理过spinner类,它几乎可以从各个方面进行定制.因此,当我处理它时,我已经获得了一些详细的方面.所以我将从它显示为什么它有缺陷的部分开始.
1_T在弹出窗口/布局/对话框created-shows(布局膨胀)事件中没有默认侦听器.有一些解决方法,如微调器上的ontouch监听器,然后检查是否在旋转器区域发生触摸完成,然后你知道弹出窗口将显示但仍然不可靠,因为你可以用异步任务填充弹出窗口.
2_再次选择相同索引时,不会触发项目选定事件.这真的很烦人,因为我可能会根据其他条件更新适配器,这将改变当前选择和列表顺序等...当然有一种解决方法,通过创建自己的微调器类并将其添加到xml中,如com.myproject.customspinner等......(Spinner:onItemSelected在所选项目保持不变时不被调用)
3_Spinner没有可用的功能 OnClickListener和OnItemLongTouchListener事件.
4_Changing Spinner DropDown列表divider元素的属性(如颜色)比更改所有dropdrown和spinner的背景视图本身需要更多的劳动,这是非常荒谬的.
5_Spinner这个名字本身很荒谬=))).
那么我可以用什么而不是Spinner?哪种方式最好?
我在Welcome Activity上有一些基本代码,它像往常一样简单地绑定List适配器:
final ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, android.R.id.text1);
spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
Run Code Online (Sandbox Code Playgroud)
这曾经有效,直到我更新到API级别25.此时,没有其他更改,微调器下拉列表的文本变得不可读:
我的主题的父级是"Theme.AppCompat.Light.NoActionBar",但同样,我没有玩那里的颜色,因为它显示正确(API <25)没有任何改变.任何的想法?
我知道我可以用一些setTextColor()内部修复它spinner.setOnItemSelectedListener(),但主要的一点是理解为什么它工作,现在它没有,因为这可能是我身边某些概念错误的标志,甚至某种Android bug.事实上,我注意到相同的问题(深色背景上的黑色文本)在非常标准的小部件/应用程序上,如Cyanogen/LineageOS默认天气一:
我有一个片段,由一个微调器和一个按钮组成.您可以使用微调器选择四个选项之一,然后按钮将转到下一个活动.
为了实现微调器,我需要在Fragment上实现onItemSelectedListener,但是要使用我需要实现onClickListener的按钮.但我不能两个都做?我本以为这是一个非常简单的事情,并且在View上需要多个不同的事件监听器必须是常见的,那么如何实现呢?
这是我正在使用的代码: -
public class FragmentTypeSelect extends Fragment实现OnItemSelectedListener {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState){
// set the view so that it can be referenced
View theView = inflater.inflate(R.layout.fragment_type_select,
container,false);
// set OnClickListener for the button
setUpClickListener(theView,R.id.but_select);
//===============================
// NEW TYPE SPINNER
//===============================
Spinner spinner = (Spinner) theView.findViewById(R.id.new_type_spinner);
spinner.setOnItemSelectedListener((OnItemSelectedListener) this);
// Create an ArrayAdapter using the string array and a default spinner layout
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
R.array.types_array, android.R.layout.simple_spinner_item);
// Specify the layout to use when …Run Code Online (Sandbox Code Playgroud) 
请参阅附图.
setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback)添加一个在"我的库"下旋转的微调器,我无法在其下添加子列表.我无法找到为"ALL MUSIC"添加微调器的方法,而不是弄乱操作栏的主标题.
任何帮助表示赞赏!
我需要将下拉箭头设置为更接近其发光文本元素Spinner.怎么能实现这个?
<Spinner android:id="@+id/spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
我有一个主要活动,它有简单的按钮和与之关联的监听器.每个按钮都会打开一个新活动(意图).但是,在打开活动时,加载会导致UI冻结需要一些时间.我想通过简单地在它们之间添加一个加载圆(微调器)来避免这种情况.我搜索了很多帖子,但仍然找不到任何东西.
加载圈我的意思是这个