gpt4 book ai didi

android - 选择后自定义微调器不隐藏下拉菜单

转载 作者:太空宇宙 更新时间:2023-11-03 10:47:35 24 4
gpt4 key购买 nike

(Android API 版本 9)我使用自定义适配器创建了一个微调器,并覆盖了 getView() 以使用我的具有 TextView 的 xml 文件对其进行扩充。但是现在,我的微调器在用户选择一个项目后没有关闭下拉列表。选择一个项目后是否有关闭微调器下拉菜单的方法?

代码

//Code in onCreate function
Spinner list = (Spinner) findViewById(R.id.spn_purchaseList);
listAdapter = new ItemListAdapter(this, new MyItemList());
list.setAdapter(listAdapter);
listAdapter.item_list.addItem(new MyItem("Test", "Test Item"));
listAdapter.notifyDataSetChanged();
//onCreate end
//the class below is inside "MainActivity extends Activity"
class ItemListAdapter extends BaseAdapter
{
Context context;
MyItemList item_list;
MyItem selectedItem;


ItemListAdapter(Context con,MyItemList k)
{
super();
this.context=con;
this.item_list=k;
selectedItem=null;
}

@Override
public int getCount() {

return item_list.getCount();
}

@Override
public MyItem getItem(int arg0) {

return this.item_list.getList().get(arg0);
}

@Override
public long getItemId(int arg0) {

return this.item_list.getPosition(this.item_list.getList().get(arg0));
}

@Override
public View getView(int position, View arg1, ViewGroup parent) {

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View spinner_item = inflater.inflate(R.layout.spinner_layout, parent, false);

TextView tx = (TextView)spinner_item.findViewById(R.id.txt_spinner);
tx.setId((int) item_list.getPosition(item_list.getList().get(position)));


tx.setText(this.item_list.getList().get(position).name.toString());
tx.setBackgroundResource(R.drawable.spinner_item);

tx.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
selectedItem = item_list.getItem(v.getId());
list.setSelection(v.getId());



}
});

return spinner_item;
}

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent)
{


return getView(position,convertView,parent);

}

}

最佳答案

调用 setVisibility(View.GONE) 可以隐藏下拉菜单,但它似乎会导致 Spinner 状态出现问题,即您将无法在关闭下拉菜单后重新打开它。

首选方法是获取 Spinner 的句柄并从 onClick() 监听器调用其 onDetachedFromWindow()。

@Override
public void onClick(View v) {
// code here to get selected item and do something with it

// hide the spinner dropdown
Spinner spinner = (Spinner) findViewById(R.id.mySpinner);
if (spinner != null) {
try {
Method method = Spinner.class.getDeclaredMethod("onDetachedFromWindow");
method.setAccessible(true);
method.invoke(spinner);
} catch (Exception e) {
e.printStackTrace();
}
}
}

关于android - 选择后自定义微调器不隐藏下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213278/

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