Spinner Array нужно связать свои элементы с существующими макетами? - PullRequest
0 голосов
/ 18 марта 2019

Итак, спиннер, который я сейчас выбрал, из программного массива, который выбирает имена и изображения на основе того, что находится в массиве.Что мне нужно, это выбирать из элементов в массиве, только если они существуют на основе имеющихся у меня макетов.например.У меня есть несколько учетных записей в моем основном списке активности.Я хочу иметь возможность выбирать учетную запись в моем счетчике только на основе имеющихся учетных записей (у пользователя есть только 2 из 3 учетных записей из массива, поэтому отображаются только 2 элемента в счетчике, а не все 3)

Вот мой текущий код счетчика, а также массив:

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 Ответ

0 голосов
/ 18 марта 2019

Вы просто измените массив. Если вам нужно получить список учетных записей асинхронно, вы можете вызвать mAdapter.notifyDataSetChanged() в асинхронном обратном вызове завершения, чтобы сообщить Adapter, что его резервный массив изменился.

...