2016-10-13 24 views
0

私のクラスプロジェクトのためにrecyclerviewを構築する方法に従いましたが、何らかの理由でそれを行うことができません。私は何が欠けているのか分からない。アイデア?RecylcerViewを埋め込むことができません

編集:私は先に行って、

関連するコードreuqest時に多くのコードを追加しました:

String selectedVenue; 
String id; 
String currentuser; 
String venueType; 
boolean canComment; 
ArrayList<Comments> commentList = new ArrayList<>(); 

ParseGeoPoint venueLocation; 
ParseGeoPoint userLocation; 

Button commentButton; 
RecyclerView commentRecView; 
SwipeRefreshLayout mySwipeRefreshLayout; 

CommentDetailAlt commentDetailAdapter; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    setContentView(R.layout.activity_user_feed_alt); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    try{ 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 
    currentuser = ParseUser.getCurrentUser().getUsername(); 


    mySwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swiperefreshAlt); 
    mySwipeRefreshLayout.setOnRefreshListener(
      new SwipeRefreshLayout.OnRefreshListener() { 
       @Override 
       public void onRefresh() { 
        mySwipeRefreshLayout.setRefreshing(true); 
        commentList.clear(); 
        GetFeed download = new GetFeed(); 
        download.execute(); 
       } 
      } 

    ); 

    commentRecView = (RecyclerView) findViewById(R.id.comment_list); 
    commentRecView.setLayoutManager(new LinearLayoutManager(this)); 
    commentDetailAdapter = new CommentDetailAlt(commentList, this); 
    commentRecView.setAdapter(commentDetailAdapter); 

    UserFeedAlt.GetFeed download = new GetFeed(); 
    download.execute(); 

} 




public class GetFeed extends AsyncTask<String, Void, Void> { 
    ArrayList<Comments> temp = new ArrayList<>(); 

    @Override 
    protected Void doInBackground(String... strings) { 

     ParseQuery<ParseObject> contentFeed = new ParseQuery<>("UserCommentary"); 
     ParseQuery<ParseObject> drinks = new ParseQuery<>("venueDrinks"); 
     if(venueType.equals("House Parties")){ 
      //Query for Bars 
      drinks.whereEqualTo("venueName",selectedVenue); 
      drinks.whereEqualTo("venueID",id); 
      drinks.addDescendingOrder("createdAt"); 
      drinks.setLimit(2); 
      try{ 
       List<ParseObject>qReply = drinks.find(); 
       if(qReply.size()>0){ 
        for(ParseObject item : qReply){ 
         String drinkName = item.getString("venueDrinkName"); 
         float drinkPrice = (float) item.getInt("venuePriceDrink"); 
         boolean isImage = item.getBoolean("isImage"); 
         Bitmap bmp; 
         Comments drink = new Comments(String.valueOf(drinkPrice),selectedVenue,id,drinkName,0,true); 
         if(isImage){ 
          ParseFile dataPhoto = item.getParseFile("imgFile"); 
          byte[] data = dataPhoto.getData(); 
          bmp = BitmapFactory.decodeByteArray(data, 0 ,data.length); 
          drink.photoFile = bmp; 
         } 
         temp.add(drink); 
        } 
       } 
       else{ 
        String comment = "Nothing Here"; 
        String owner = "Mr. Smith"; 
        int count = 0; 
        String id = "Test"; 
        String venueName = "Smith's Mayback's"; 
        Comments newComment = new Comments(comment,venueName,id,owner,count,false); 
        temp.add(newComment); 
       } 
      } 
      catch (Exception e){ 
       e.printStackTrace(); 
      } 


      contentFeed.whereEqualTo("venueName",selectedVenue); 
      contentFeed.whereEqualTo("venueID",id); 
      contentFeed.addDescendingOrder("createdAt"); 
      try{ 
       List<ParseObject>qReply = contentFeed.find(); 
       if(qReply.size()>0){ 
        for(ParseObject item : qReply){ 
         String commentOwner = item.getString("owner"); 
         String commentContent = item.getString("comment"); 
         boolean isImage = item.getBoolean("image"); 
         Bitmap bmp; 
         Comments comment = new Comments(commentContent,selectedVenue,id,commentOwner,0,false); 
         if(isImage){ 
          ParseFile dataPhoto = item.getParseFile("imgFile"); 
          byte[] data = dataPhoto.getData(); 
          bmp = BitmapFactory.decodeByteArray(data, 0 ,data.length); 
          comment.photoFile = bmp; 
         } 
         temp.add(comment); 
        } 
       } 
      } 
      catch (Exception e){ 
       e.printStackTrace(); 
      } 


     } 
     else if(venueType.equals("Bars")){ 
      //Query for HouseParties 
      contentFeed.whereWithinMiles("Location",userLocation,0.00284091); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     commentList = temp; 
     Log.i("AppInfo", String.valueOf(commentList.size())); 
     commentDetailAdapter.notifyDataSetChanged(); 
     mySwipeRefreshLayout.setRefreshing(false); 



    } 


} 
+1

への

commentDetailAdapter = new CommentDetailAlt(commentList, this); commentRecView.setAdapter(commentDetailAdapter); UserFeedAlt.GetFeed download = new GetFeed(); download.execute(); 

変更?また、RecyclerViewで任意の種類のLayoutManagerを追加したことを確認してください。 – ajantha

+0

ああ、私はonCreateメソッドで 'commentRecView =(RecyclerView)findViewById(R.id.comment_list);と設定しました。commentRecView.setLayoutManager(new LinearLayoutManager(this)); commentDetailAdapter = new CommentDetailAlt(commentList、this); commentRecView.setAdapter(commentDetailAdapter); ' –

+0

AsyncTaskの完了後にアダプタに通知する必要があります –

答えて

0

アダプタ

protected void onPostExecute(String result) { 
    commentDetailAdapter.notifyDataSetChanged(); 
} 

onPostExecuteをAsyncTaskにonPostExecute機能を追加し、通知しますバックグラウンドプロセスが完了した後でコールし(coz配列がそれ以前に空であった可能性があります)、onPostExecuteはメインスレッドにアクセスできます。

+0

コードを追加しましたが、なんらかの理由でこれも修正されませんでした。 –

+0

データ配列が空でないことを確認しました –

+0

それを削除します。私は、パースサーバーと、オンポスト実行メソッドの後に配列のサイズをチェックしました。 2つの項目が存在するはずです –

0

オリジナル:あなたはRecyclerViewにアダプタを設定している

UserFeedAlt.GetFeed download = new GetFeed(); 
download.execute(); 

commentDetailAdapter = new CommentDetailAlt(commentList, this); 
commentRecView.setAdapter(commentDetailAdapter); 
+0

あなたの返事をありがとう、私は本当にカスタムオブジェクト 'コメント'が実際に問題の原因であると確信しています。私は現在、それを修正する方法をdelopingしています。 –

関連する問題