Je reviens à Android après un long moment et je suis un peu coincé avec un problème.
L'application consiste en une liste de mises en page, chacune étant soutenue par un modèle via l'adaptateur.
Chaque mise en page a plusieurs vues, l'une d'entre elles étant un spinner.
Je veux modifier les données dans l'adaptateur lorsque vous modifiez la valeur du Spinner, mais je ne sais pas comment référencer l'objet dans l'adaptateur.Comment accéder à un objet adaptateur à partir d'une vue dans le ListView
public class MainActivity extends AppCompatActivity {
ArrayList<Troop> values = new ArrayList<Troop>();
MySimpleArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
values.add(new Troop());
final ListView listView =(ListView) findViewById(R.id.listview);
adapter = new MySimpleArrayAdapter(
this,
values);
listView.setAdapter(adapter);
}
public class Troop {
private String weapon;
private int bs;
private int total_modifier;
public Troop() {
}
public int getBs() {
return bs;
}
public void setBs(int bs) {
this.bs = bs;
}
}
public class MySimpleArrayAdapter extends ArrayAdapter {
private final Context context;
private ArrayList<Troop> troopers;
private String[] possible_bs = new String[] {"10", "11", "12", "13", "15", "16"};
public MySimpleArrayAdapter(Context context, ArrayList<Troop> values) {
super(context, -1, values);
this.context = context;
this.troopers = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
Spinner bs_spinner = rowView.findViewById(R.id.bs_spinner);
ArrayAdapter<String> bs_adapter = new ArrayAdapter<String>(
context,
android.R.layout.simple_spinner_dropdown_item,
possible_bs);
bs_spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener());
bs_spinner.setAdapter(bs_adapter);
return rowView;
}
}
public class CustomOnItemSelectedListener implements AdapterView.OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
// I want to call getBs on the Trooper correspoding to this view here
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
}
}
Vous devez '' étend ArrayAdapter –
Merci pour votre réponse. La question est, comment accéder à l'adaptateur à partir de la méthode onItemSelected? –
C'est un commentaire, pas une réponse;) Quel adaptateur? –