gpt4 book ai didi

android - 重新选择 ActionBar 中的 Spinner 项

转载 作者:行者123 更新时间:2023-11-30 03:01:37 27 4
gpt4 key购买 nike

目前我正在开发一个 Android 应用程序,我们正在使用操作栏和特定 View 的微调器导航。

主要问题是:用户应该能够在他已经选择了这个项目之后重新选择一个操作栏微调器项目。 Android 似乎阻止了对操作栏微调项的第二次选择。

有没有一种方法可以多次选择一个项目,或者是否有一种完全不同的方法来实现这种行为?

最佳答案

好的,现在经过多次尝试我找到了一个可行的解决方案,这或多或少是一个“肮脏”的解决方法。

我只是将一个虚拟项(例如一个空字符串)添加到用于填充适配器的列表的末尾。然后在我的 getDropDownView() 适配器中,我检查该位置是否是我的适配器/列表的最后一个元素,并将我的 ViewHolder 中的所有元素设置为高度 0以及根布局 LayoutParams 的高度。

但是要小心 LayoutParams。项目小部件周围的布局无关紧要。 Android 将根布局转换为 AbsListView。因此,您必须使用 AbsListView.LayoutParams 才能将布局高度设置为零。

这是我是如何做到的一个小例子。

public class CustomSpinnerAdapter extends BaseAdapter {

public static class ViewHolder {
public RelativeLayout mBaseLayout;
public TextView mDayLabel;
public TextView mDateLabel;
}

private List<String> mItems;
private String[] mDropdownDates;

public CustomSpinnerAdapter() {
mItems = new ArrayList<String>();

mItems.add("Today");
mItems.add("Yesterday");
mItems.add("2 days ago");
mItems.add("3 days ago");
mItems.add("");

// used to fill String array with dates in specified format
mDropdownDates = populateDates("dd:mm");
}

@Override
public int getCount() {
return mItems.size();
}

@Override
public Object getItem(int i) {
return mItems.get(i);
}

@Override
public long getItemId(int i) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ...
}

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

ViewHolder viewHolder;
if(convertView == null) {
viewHolder = new ViewHolder();
convertView = mInflater.inflate(R.layout.item_spinner_dropdown_date, parent, false);

viewHolder.mBaseLayout = (RelativeLayout) convertView.findViewById(R.id.spinnerDropdownLayout);
viewHolder.mDayLabel = (TextView) convertView.findViewById(R.id.spinnerDropdownDay);
viewHolder.mDateLabel = (TextView) convertView.findViewById(R.id.spinnerDropdownDate);

convertView.setTag(viewHolder);
}
else {
viewHolder = (ViewHolder) convertView.getTag();
}

if(position < getCount() - 1) {
viewHolder.mDayLabel.setText(mItems.get(position));
viewHolder.mDateLabel.setText(mDropdownDates[position]);
}
else {
viewHolder.mDayLabel.setHeight(0);
viewHolder.mDateLabel.setHeight(0);
viewHolder.mBaseLayout.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0));
viewHolder.mBaseLayout.setVisibility(View.GONE);
}

parent.setVerticalScrollBarEnabled(false);

return convertView;
}
}

我希望这对你们中的一些人有帮助。

关于android - 重新选择 ActionBar 中的 Spinner 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22430498/

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