2014-06-21 44 views
1

我想弄清楚如何在ParseQueryAdapter<>中找到自定义ParseObject的位置,以便我可以在我的Android项目中设置微调控制器的位置或检查检查列表的行。ParseQueryAdapter获取对象的位置

我目前使用延伸ParseQueryAdapter<Vendor>的定制适配器,其中Vendor延伸ParseObject。我也有一个Item,延伸ParseObjectVendor相关联。在这个特定的例子中,如果我想编辑一个Item,我希望先前选择的Vendor显示在微调器中。我想设置由我的自定义ParseQueryAdapter<Vendor>支持的微调器的选择。之前我综合解析,我用一个ArrayAdapter<CharSequence>它可以这样做:

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

我在想,我能得到一个Vendor对象时,我在数组中只是使用String名的位置等,但ParseQueryAdapter没有按没有getPosition方法。我正在考虑制定一种定制的方法来解决这个问题,但是我不知道如何找到Vendor的位置。我也在考虑在我的Vendor课程中可能需要.isEqualTo(Vendor vendor)方法。

回答

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

我想清楚我需要做什么。而不是使用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()); 
    } 

我只是需要有一种方式为我的自定义要比较的对象。

+0

不回答原来的问题! –

+2

我不同意。我试图找出为什么我不能得到想要的对象。根本原因是缺少equals()覆盖 – n8yn8

+0

@ n8yn8请你详细说明一下吗?当我调用“this”时,我无法调用我的对象方法 –

相关问题