#android #android-spinner
#Android #android-spinner
Вопрос:
Итак, счетчик, который у меня есть в настоящее время, выбирает из программного массива, который извлекает имена и изображения на основе того, что находится в массиве. Что мне нужно, так это выбирать только из элементов в массиве, если они существуют на основе имеющихся у меня макетов. например. У меня есть несколько учетных записей в моем основном списке действий. Я хочу иметь возможность выбирать учетную запись в своем spinner только на основе доступных мне учетных записей (у пользователя есть только 2 из 3 учетных записей из массива, поэтому в spinner отображаются только 2 элемента, а не все 3)
Вот мой текущий код spinner, а также массив:
SpinnerActivity:
public class SpinnerActivity extends AppCompatActivity {
private ArrayList<AccountItem> mAccountList;
private AccountAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_transactions);
//the account_spinner is being pulled from the fragment_transactions xml
initList();
Spinner spinnerAccount = findViewById(R.id.account_spinner);
mAdapter = new AccountAdapter(this, mAccountList);
spinnerAccount.setAdapter(mAdapter);
spinnerAccount.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
AccountItem clickedItem = (AccountItem) parent.getItemAtPosition(position);
String clickedAccountName = clickedItem.getAccountName();
Toast.makeText(SpinnerActivity.this, clickedAccountName " selected", Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
/**
*This is the array, I need this to link each item to their respective accounts
*that are available
**/
private void initList() {
mAccountList = new ArrayList<>();
mAccountList.add(new AccountItem("Account1", R.drawable.account1_icon));
mAccountList.add(new AccountItem("Account2", R.drawable.account2_icon));
mAccountList.add(new AccountItem("Account3", R.drawable.account3_icon));
}
}
Мне просто нужно представление о том, с чего начать. В нынешнем виде я не вижу способа присвоить элементам моего массива индивидуальные идентификаторы, поэтому я не уверен, нужно ли мне менять свой массив?
Ответ №1:
Вы просто меняете массив. Если вам нужно получить список учетных записей асинхронно, вы можете вызвать mAdapter.notifyDataSetChanged()
обратный вызов асинхронного завершения, чтобы сообщить Adapter
, что его резервный массив изменился.