ParseQueryAdapter获取对象的位置

时间:2014-06-21 22:23:49

标签: android parse-platform android-spinner

我正在尝试找出如何在ParseObject中找到自定义ParseQueryAdapter<>的位置,以便我可以设置微调器的位置或检查我的Android项目中的检查列表的行

我目前正在使用ParseQueryAdapter<Vendor>扩展Vendor扩展ParseObject的自定义适配器。我还有Item扩展ParseObjectVendor相关联。在此特定示例中,如果我要编辑Item,我希望在微调器中显示先前选择的Vendor。我想设置由自定义ParseQueryAdapter<Vendor>支持的微调器的选择。在我整合Parse之前,我使用的是ArrayAdapter<CharSequence>,可以这样做:

String vendorName = Vendor.getName();
int position = adapter.getPosition(vendorName);
spinner.setSelection(position);

我在想我可以获得Vendor对象的位置,就像我在数组中使用String名称时一样,但ParseQueryAdapter没有getPosition方法。我正在考虑制作一个自定义方法,但我却不知道如何找到Vendor的位置。我也在想我的.isEqualTo(Vendor vendor)课程中可能需要Vendor方法。

2 个答案:

答案 0 :(得分:1)

您需要查看ParseQuery适配器,执行以下操作:

public class CustomListAdapter extends BaseAdapter {
    private final YourParseAdapter adapter;

    public CustomListAdapter(final Context context) {
        this.adapter = new YourParseAdapter(context);
        adapter.registerDataSetObserver(new DataSetObserver() {
            @Override
            public void onChanged() {
                super.onChanged();
                notifyDataSetChanged();
            }
        });
    }

    public void reloadObjects() {
        adapter.loadObjects();
    }

    // Customize the layout by overriding getItemView
    @Override
    public View getView(int i, View v, ViewGroup viewGroup) {
        View result = adapter.getView(i, v, viewGroup);

        // HERE YOU HAVE THE VIEW GENERATED BY PARSE AND THE ITEM POSITION

        return result;
    }

    @Override
    public int getCount() {
        return adapter.getCount();
    }

    @Override
    public Object getItem(int i) {
        return adapter.getItem(i);
    }

    @Override
    public long getItemId(int i) {
        return adapter.getItemId(i);
    }
}

答案 1 :(得分:-1)

我想出了我需要做的事情。我没有使用ParseQueryAdapter<Vendor>,而是从单独的查询中获取List<Vendor>,然后使用了ArrayAdapter<Vendor>,以便我可以使用adapter.getPosition(obj)方法。由于ArrayAdapter使用的.indexOf(Obj)又使用了.equals(Obj),因此我添加到了我的Vendor对象中:

@Override
    public boolean equals(Object o) {
        return this.getObjectId().equals(((Vendor) o).getObjectId());
    }

我只需要有一种方法可以比较我的自定义对象。