【发布时间】:2016-10-10 05:30:15
【问题描述】:
我一直在研究具有自定义下拉菜单布局的微调器。这是我的问题,当我选择时,假设下拉列表中的第二项,它被选中并且下拉列表关闭。当我重新打开下拉菜单时,第一行保持不变,但第二行被重命名为第一行。但它告诉我当我将 log.d 打印到控制台时,选择了 position:2。
这是我的代码,
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getCustomView(position, convertView, parent);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = (TextView) convertView.inflate(getContext(), android.R.layout.simple_spinner_item, null);
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
textView.setTextColor(ContextCompat.getColor(getActivity().getApplicationContext(), R.color.blue));
if(list.getIsRecent()){
textView.setText("Most Recent ");
} else {
textView.setText(list.get(position).getName());
}
return textView;
}
public View getCustomView(final int position, View convertView, ViewGroup parent) {
boolean isRecent;
isRecent = list.get(position).getIsRecent();
if (convertView == null) {
convertView = inflater.inflate(R.layout.custom_spinner_layout, parent, false);
savedSearchName = (TextView) convertView
.findViewById(R.id.custom_spinner_layout_text_view);
btnDelete = (ImageButton) convertView
.findViewById(R.id.custom_spinner_layout_button);
relativeLayoutContainer = (RelativeLayout) convertView.findViewById(R.id.relativeLayout_item_name_container);
relativeLayoutContainer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG,"relativeLayoutContainer: setOnClickListener: position"+position);
Method method = null;
if(mSavedSearchCriteriaSpinner != null) {
mSavedSearchCriteriaSpinner.setSelection(position);
try {
method = Spinner.class.getDeclaredMethod("onDetachedFromWindow");
method.setAccessible(true);
method.invoke(mSavedSearchCriteriaSpinner);
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
if(isRecent){
btnDelete.setVisibility(View.INVISIBLE);
savedSearchName.setText(list.get(position).getName() + "MOSTRECENT");
} else {
savedSearchName.setText(list.get(position).getName());
btnDelete.setVisibility(View.VISIBLE);
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//AlertDialog
});
}
}
return convertView;
}
不,这不是家庭作业问题。
【问题讨论】:
标签: android android-spinner android-adapter