java - Android 中的 LinkedHashSet<ItemCategory> 和 Spinner

标签 java android

对于我的 Android 应用程序,我有微调器,提供产品类别列表供用户选择

以下讨论:Corelating items from two arraylists in Java

我按照以下方式创建了一个类别对象:

public class ItemCategory {

    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

我将所有 ItemCategories 存储在 LinkedHashSet 中,并将此 LinkedHashSet 传递给需要显示带有类别的微调器的所有 Activity 。

现在的问题是,如何使用这些 ItemCategory 对象的名称填充微调器,然后在进行选择时,需要将 int newItemCategoryID 设置为同一 ItemCategory 对象中的相应 ID?

这就是我填充微调器的方式:

public class LoadSpinnerData {
    public static void loadSpinnerData(Context context, ArrayList<String> array, Spinner spinner) {

        // Creating adapter for spinner
        ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(context,
                R.drawable.simple_spinner_item, array);

        // Drop down layout style - list view with radio button
        dataAdapter
                .setDropDownViewResource(R.drawable.simple_spinner_dropdown_item);

        // Attaching data adapter to spinner
        spinner.setAdapter(dataAdapter);
    }
}

这就是我将 ArrayList 传递给此微调器的方式:

    categoriesInfo = new GetCategoriesFromDB(dbTools).execute().get(4000, TimeUnit.MILLISECONDS);
    ArrayList<String> categoryNamesArray = new ArrayList<String>();
    for(ItemCategory itemCategory : categoriesInfo) {
        categoryNamesArray.add(itemCategory.getName());
    }
    LoadSpinnerData.loadSpinnerData(this, categoryNamesArray, sAddAnItemCategory);

问题是我在这里做什么:

sAddAnItemCategory.setOnItemSelectedListener(new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

                newItemCategoryID = ????

            }

        });

最佳答案

要检索位置的元素,您可以使用arg0.getItemAtPosition(arg2)

根据您的具体情况,它将是:

ItemCategory item = (ItemCategory) arg0.getItemAtPosition(arg2);
newItemCategoryID = item.getId();

编辑:

public class LoadSpinnerData {
public static void loadSpinnerData(Context context, ArrayList<ItemCategory> array, Spinner spinner) {

    // Creating adapter for spinner
    ArrayAdapter<ItemCategory> dataAdapter = new ArrayAdapter<ItemCategory>(context,
            R.drawable.simple_spinner_item, array);

    // Drop down layout style - list view with radio button
    dataAdapter
            .setDropDownViewResource(R.drawable.simple_spinner_dropdown_item);

    // Attaching data adapter to spinner
    spinner.setAdapter(dataAdapter);
}
}

    categoriesInfo = new GetCategoriesFromDB(dbTools).execute().get(4000, TimeUnit.MILLISECONDS);      
    LoadSpinnerData.loadSpinnerData(this, categoriesInfo, sAddAnItemCategory);

关于java - Android 中的 LinkedHashSet<ItemCategory> 和 Spinner,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21601441/

相关文章:

java - Maven 禁止循环包依赖

java - 升级到 2.2.10 后,CXF Web 服务将无法运行

android - IntentService 已弃用,如何将其替换为 JobIntentService?

android - 为什么影子没有出现?

java - 我可以将一组 ArrayList 添加到单个 ArrayList 中吗?

java - JPA 不按 LocalDate 和 LocalTime 对记录进行排序

java - 试图理解这个在 Java 中使用 changeListener 的 swing 程序的输出?

java - 如何在android中比较两次?

android - 如何使新 Activity 在 Android 中可见

java - Java中Collection类的性能