gpt4 book ai didi

java - 自定义控件内的 Android 微调器 - OnItemSelectedListener 不会触发

转载 作者:行者123 更新时间:2023-11-30 03:56:42 25 4
gpt4 key购买 nike

我正在编写一个扩展 LinearLayout 的自定义控件。在该控件内,我使用微调器让用户从列表中选择一个项目。我遇到的问题是 OnItemSelectedListener 事件没有触发。将相同的代码移动到 Activity/Fragment 时一切正常。

我遵循了其他人询问相同问题的一些答案,但没有任何帮助。事件仍然没有触发。

这是我按照建议将微调器放在我的布局 XML 而不是代码中的答案后的代码。当我尝试“new Spinner(ctx)”时,我得到了相同的结果...

布局 XML:

  <Spinner
android:id="@+id/accSpinner"
android:layout_width="0dip"
android:layout_height="0dip" />

控件的初始化函数(在控件构造函数上调用):

private void init()
{
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
mAccountBoxView = layoutInflater.inflate(R.layout.control_accountselector, null);

mTxtAccount = (TextView)mAccountBoxView.findViewById(R.id.txtAccount);
mSpinner = (Spinner)mAccountBoxView.findViewById(R.id.accSpinner);

mAccountBoxView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
mSpinner.performClick();
}
});

setSpinner();
addView(mAccountBoxView);
}

private void setSpinner()
{
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, mItems);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mSpinner.setAdapter(dataAdapter);

mSpinner.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
String selectedItem = mItems.get(position);
handleSelectedItem(selectedItem);
}

@Override
public void onNothingSelected(AdapterView<?> parent)
{

}
});
}

当我触摸我的控件时,微调器升起就好了,项目列表就在那里。当我单击一个项目时,微调器关闭但我永远不会进入 onItemSelected 或 onNothingSelected ..

有什么想法吗?

最佳答案

找到答案了!

我已经用一个空的项目列表初始化了微调器适配器。然后使用这个公共(public)函数添加实际项目:

public void addItem(String item)
{
mItems.add(item);
}

我把函数改成了这样:

public void addItem(String item)
{
mItems.add(item);
mDataAdapter.notifyDataSetChanged();
}

现在适配器知道新项目并且事件被触发。

当我将代码移动到一个 Activity 时,没有任何东西可以从外部调用它,所以在我设置适配器之前项目就在数组中,这就是它在那里工作的原因。

关于java - 自定义控件内的 Android 微调器 - OnItemSelectedListener 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13223620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com