Я реализовал спиннер с пользовательским адаптером. Когда я выбираю любой элемент этого блесны, он исчезнет из списка блесен. Позиция переопределяется первым элементом списка, в результате чего появляется двойной. Например:
Нажмите на счетчик:
- Элемент 1
- Элемент 2
- Элемент 3 <- Выбрать элемент 3 </li>
Повторное открытие счетчика:
кто-нибудь знает, почему это положение переопределяется и как этого избежать?
public class activityScheduler extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
Spinner spinner;
Adapter.spinner.spinAdapterActuator componentActuator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_schedule);
spinner = findViewById(R.id.spinner_sensors);
spinner.setOnItemSelectedListener(this);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Actuator i = componentActuator.getActuator(position);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
Update();
}
});
}
public void Update() {
ArrayList<Actuator> components = new ArrayList<>();
List<Actuator> componentList = allOperationList();
item = new Actuator();
for (int i=0; i < componentList.size(); i++)
{
item = componentList.get(i);
components.add(item);
Log.d(componentList.size() + "",item.name);
}
componentActuator = new spinner.spinAdapterActuator(activityMain.getContextOfApplication(),components);
spinner.setAdapter(componentActuator);
componentActuator.notifyDataSetChanged();
}
public List<Actuator> allOperationList (){
return new Select()
.from(Actuator.class)
.execute();
}
}
// And the adapter
public static class spinAdapterActuator extends BaseAdapter {
Context context;
private ArrayList<Actuator> arrayList;
public spinAdapterActuator (Context context, ArrayList<Actuator> arrayList) {
this.context = context;
this.arrayList = arrayList;
}
@Override
public int getCount() {
return arrayList.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
public Actuator getActuator(int position) {
return arrayList.get(position);
}
public View getView (int position, View convertView, ViewGroup parent){
if(convertView == null){
convertView = View.inflate(context,R.layout.spinner_scheduler, null);
ImageView icon = convertView.findViewById(R.id.imageView);
TextView name = convertView.findViewById(R.id.txt_component);
Actuator item = arrayList.get(position);
name.setText(item.getDescription());
icon.setImageResource(Converter.toImg(item.getName(),1));
}
return convertView;
}
}