У меня есть счетчик. Который я переопределил пользовательский dropview getview.
Я работаю в андроиде 2,2Spinner by arrayadapter действует «странно»
Проблемы заключается в том, что выбранное значение заменяются на «по умолчанию» (пустое поле), вставленное значение при повторном открытии селектора: изображения, чтобы объяснить ниже, и переопределяется код под ними:
Теперь нажав на блесну:
Теперь нажатие грабит, а затем нажмите кнопку S передник снова
Dropdown переопределен метод:
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
View v;
ViewHolder holder;
if (convertView == null) {
v = View.inflate(ctx, R.layout.fav_spinner_item, null);
holder = new ViewHolder();
holder.indentationField = (ImageView) v
.findViewById(R.id.indent);
holder.nameField = (TextView) v.findViewById(R.id.name);
holder.levelCount = mList.get(position).getTier() != -1 ? mList
.get(position).getTier() : 0;
holder.nameField.setText(mList.get(position).getDisplayName());
if (holder.levelCount == 0) {
holder.indentationField.setVisibility(View.GONE);
} else {
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.indentationField.getLayoutParams();
params.setMargins(params.leftMargin+((params.leftMargin+15)*holder.levelCount), params.topMargin, params.rightMargin, params.bottomMargin);
holder.indentationField.setLayoutParams(params);
}
v.setTag(holder);
} else {
v = convertView;
holder = (ViewHolder) convertView.getTag();
}
return v;
}
Спасибо за clearification, хотя до сих пор делает это, теперь не на «грабежах», а на других. –
Я только заметил, что вы получаете «LayoutParams» из «indentationField», изменяя их, а затем снова устанавливая их. Это тоже не сработает, так как вы не можете получать оригинальные «LayoutParams», вы можете получить уже измененную версию. Вам нужно посмотреть, как вы все это делаете. –
Хорошо, поэтому нет шаблона для зрителей для меня :) –