2017-11-21 3 views
0

私は、tablayoutに2つのフラグメントを持っています。これは、解析データベースのユーザーに応じて入力する必要があります。フラグメント内の解析オブジェクトを自分のリストに渡すにはどうすればいいですか?

しかし、私はリストを取るために、問題に直面しています、それはMainActivityのコードを、次のとおりです。

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     Parse.initialize(this); 
     ParseInstallation.getCurrentInstallation().saveInBackground(); 

     setContentView(R.layout.activity_main); 
     ....... 

     ParseQuery<ParseObject> query = ParseQuery.getQuery("Items"); 
     // this will find the user. 
     // then find the first instance 
     query.findInBackground(new FindCallback<ParseObject>() { 
      @Override 
      public void done(List<ParseObject> objects, com.parse.ParseException e) { 
       List<Items> 1List = new ArrayList<Items>(); 
       List<Items> 2List = new ArrayList<Items>(); 
       if (objects == null) { 
        Log.d("nothing found", "let's go ahead and create a new object."); 
        //ADD THE OBJECT AS A NEW OBJECT!!!! 
       } else { 
        for(i=0;objects.size() > 0;i++) { 
         ParseObject parseObject = objects.get(i); 
         if(parseObject.getString("iduser").equals(ID_1)){ 

          1List.add(objects.get(i));//ERROR HOW TO FIX? 
          /*THIS ERROR add 
          (com.dev.bob.recife3.persistence.Items) 
            in List cannot be applied 
            to 
          (com.parse.ParseObject)*/ 

         }else{ 
          2List.add(objects.get(i));//ERROR HOW TO FIX? 
          /*THIS ERROR add 
          (com.dev.bob.recife3.persistence.Items) 
            in List cannot be applied 
            to 
          (com.parse.ParseObject)*/ 
         } 
         if (getFragmentRefreshListener1() != null) { 
          getFragmentRefreshListener1().onRefresh(new ItemsAdapter(getContext(), 1List)); 
         } 

         if (getFragmentRefreshListener2() != null) { 
          getFragmentRefreshListener2().onRefresh(new ItemsAdapter(getContext(), 2List)); 
         } 
         String test = parseObject.getString("name").toString();//JUST A TEST 
         Log.d("points found", "" + ""); 
        } 
       } 
      } 
     }); 
    } 
    ........ 
    public class SectionPagerAdapter extends FragmentPagerAdapter { 

     public SectionPagerAdapter(FragmentM2ger fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
        return new 2TabFragment(); 
       case 1: 
        return new 1TabFragment(); 
       default: 
        return new 2TabFragment(); 
      } 
     } 

     @Override 
     public int getCount() { 
      return 2; 
     }//retorna as duas abas estaticamente 

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return getString(R.string.2); 
       case 1: 
        return getString(R.string.1); 
       default: 
        return getString(R.string.2); 
      } 
     } 
    } 
    private Context getContext(){ 
     return this; 
    } 

    public FragmentRefreshListener getFragmentRefreshListener1() { 
     return fragmentRefreshListener1; 
    } 

    public void setFragmentRefreshListener1(FragmentRefreshListener fragmentRefreshListener1) { 
     this.fragmentRefreshListener1 = fragmentRefreshListener1; 
    } 

    private FragmentRefreshListener fragmentRefreshListener1; 

    public interface FragmentRefreshListener{ 
     void onRefresh(ItemsAdapter itemsAdapter); 
    } 


    public FragmentRefreshListener2 getFragmentRefreshListener2() { 
     return fragmentRefreshListener2; 
    } 

    public void setFragmentRefreshListener2(FragmentRefreshListener2 fragmentRefreshListener2) { 
     this.fragmentRefreshListener2 = fragmentRefreshListener2; 
    } 

    private FragmentRefreshListener2 fragmentRefreshListener2; 

    public interface FragmentRefreshListener2{ 
     void onRefresh(ItemsAdapter itemsAdapter); 
    } 
} 

は、どのように私は、フラグメントにパースから到着したリストを得るのですか? このデータはどのように渡され、このリストは正しいフラグメントに表示されますか?エラーはコード内でコメントアウトされています。これは次のとおりです。

1List.add(objects.get(i)); (com.dev.bob.recife3.persistence.Items)一覧 が に適用することができない(com.parse.ParseObject)

は、データベースの画像に従う:

enter image description here
+0

あなたのリストは、アイテムのリストであり、あなたがのインスタンスに入れしようとしているので、それはおそらくですParseObject。 –

+0

parseobjectを受け取るようにアダプタを変更しました –

答えて

0

私はのparseObjectを受け取るために私のアダプタを変更:

List<ParseObject> 1List= new ArrayList<ParseObject>(); 
if (getFragmentRefreshListener1() != null) { 
          getFragmentRefreshListener1().onRefresh(new ItemsAdapter(getContext(), 1List)); 
         } 

         if (getFragmentRefreshListener2() != null) { 
          getFragmentRefreshListener2().onRefresh(new ItemsAdapter(getContext(), 2List)); 
         } 

そして、私のItemsAdapter:

public ItemsAdapter(Context context, List<ParseObject> items) { 
    super(); 
    this.context = context; 
    this.itemsList = items; 
} 
1

よあなたのクエリをParseObjectからItemsに変更することができます。

ParseQuery<Items> query = ParseQuery.getQuery(Items.class); 
query.findInBackground(new FindCallback<Items>() { 
    @Override 
    public void done(List<Items> objects, com.parse.ParseException e) { 
    } 
}); 

クラッシュを修正できる可能性があります。あなたのフラグメントにデータを渡す方法について。あなたが最初にクラッシュを修正すると、後でそれが出る可能性があります。

+0

入力されたオブジェクトの型がparseobject型の –

+0

ですparseobjectを受け取るようにアダプタを変更しました –

+0

ParseObjectから 'Items'クラスの拡張を宣言しましたか?なぜなら、それは通常、テーブルとパーサーをカスタムParseobjectインスタンスに指定するということです。 –

関連する問題