2016-01-16 53 views
0

IM的一個問題,我需要一些幫助,回收者看來,機器人回收視圖和旋轉

所以我有這樣的回收觀點: enter image description here

但是,當我旋轉設備,回收商永遠不會到來回.. 的事情是,即時通訊呼籲onCreate方法異步任務,所以即使我旋轉設備時,onCreate方法將被再次調用,並重新填充回收的觀點,但在這種情況下,那不會發生。我怎樣才能解決這個問題?

當我旋轉設備我得到這樣的結果: enter image description here

這是我的活動代碼:

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.StrictMode; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.DefaultItemAnimator; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView;; 

/** 
* Created by IvoMi on 15/01/2016. 
*/ 
public class MainFeed extends AppCompatActivity { 

    private getData getData = new getData(); 
    private RecyclerView recyclerView; 
    private LinearLayoutManager linearLayoutManager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_feed); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     recyclerView = (RecyclerView) findViewById(R.id.rvFeed); 
     recyclerView.setHasFixedSize(false); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 

     linearLayoutManager = new LinearLayoutManager(MainFeed.this); 
     recyclerView.setLayoutManager(linearLayoutManager); 

     new fetchFeed().execute(); 

    } 



    class fetchFeed extends AsyncTask<Void, Void, Void> { 


     @Override 
     protected void onPreExecute() { 


     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      getData.getPosts("http://**.**.***.***:81/chefeBook/feed.php"); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      feedRecyclerAdapter feedRecyclerAdapter = new feedRecyclerAdapter(MainFeed.this, getData.resultList, "http://**.***.***.***:81/chefeBook/feedImages/"); 
      recyclerView.setAdapter(feedRecyclerAdapter); 
     } 

    } 


} 

這是我的適配器代碼:

import android.content.Context; 
import android.support.v7.widget.RecyclerView; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.squareup.picasso.Picasso; 

import java.util.List; 

/** 
* Created by IvoMi on 15/01/2016. 
*/ 
public class feedRecyclerAdapter extends RecyclerView.Adapter<feedRecyclerAdapter.ViewHolder> { 

    private List<FeedPosts> resultFeedPost; 
    private LayoutInflater context; 
    private String imageFolder; 

    /* Constructor */ 
    public feedRecyclerAdapter(Context context, List<FeedPosts> resultFeedPost, String imageFolder) { 

     this.context = LayoutInflater.from(context); 
     this.resultFeedPost = resultFeedPost; 
     this.imageFolder = imageFolder; 

    } 


    @Override 
    public feedRecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     View v = context.inflate(R.layout.main_feed_item, null); 
     return new ViewHolder(v); 

    } 

    @Override 
    public void onBindViewHolder(feedRecyclerAdapter.ViewHolder holder, int position) { 


     FeedPosts feedPosts = resultFeedPost.get(position); 

     holder.rvTitle.setText(feedPosts.getTitle()); 
     holder.rvLikes.setText(feedPosts.getLikes() + " Likes"); 
     Picasso.with(holder.rvImage.getContext()).load(imageFolder + feedPosts.getImage()).fit().centerCrop().into(holder.rvImage); 



    } 

    @Override 
    public int getItemCount() { 
     return resultFeedPost == null ? 0 : resultFeedPost.size(); 
    } 

    public class ViewHolder extends RecyclerView.ViewHolder { 

     ImageView rvImage; 
     TextView rvTitle; 
     TextView rvLikes; 

     public ViewHolder(View itemView) { 
      super(itemView); 

      rvImage = (ImageView) itemView.findViewById(R.id.feedImage); 
      rvTitle = (TextView) itemView.findViewById(R.id.feedTitle); 
      rvLikes = (TextView) itemView.findViewById(R.id.feedLikes); 

     } 

    } 


} 

這是我的類,可以幫助我把數據存儲列表

裏面

這是我的JSON結果:(其不相關的問題,但belogs它,因此..)

{ 
    "Posts":[ 
     { 
     "id":"1", 
     "author":"the guy", 
     "title":"Teste", 
     "image":"1.jpg", 
     "likes":"100" 
     }, 
     { 
     "id":"2", 
     "author":"asfas", 
     "title":"dfsadfsad", 
     "image":"2.jpg", 
     "likes":"20" 
     }, 
     { 
     "id":"3", 
     "author":"Ivo", 
     "title":"fsdfsdafdsf", 
     "image":"3.jpg", 
     "likes":"15" 
     }, 
     { 
     "id":"4", 
     "author":"fsd", 
     "title":"fsdafdsf", 
     "image":"4.jpg", 
     "likes":"5" 
     } 
    ] 
} 

林還收到此錯誤,當onBindViewHolder叫:

01-16 20:46:42.243 4500-4500/****.chefebook D/Bind view Holder: Called 
01-16 20:46:42.256 4500-4500/****..chefebook D/ViewGroup: addInArray been called, this = android.support.v7.widget.RecyclerView{2ad8a20 VFED.... .F....ID 0,0-960,502 #7f0d005b app:id/rvFeed}call stack = 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup: java.lang.Throwable: addInArray 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.addInArray(ViewGroup.java:3786) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.addViewInner(ViewGroup.java:3740) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.addView(ViewGroup.java:3564) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.addView(ViewGroup.java:3509) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.RecyclerView$4.addView(RecyclerView.java:544) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.ChildHelper.addView(ChildHelper.java:107) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.RecyclerView$LayoutManager.addViewInt(RecyclerView.java:6314) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:6272) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.RecyclerView$LayoutManager.addView(RecyclerView.java:6260) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1385) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1334) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:563) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2847) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3145) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1160) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.LinearLayout.onLayout(LinearLayout.java:1651) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1888) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1742) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.LinearLayout.onLayout(LinearLayout.java:1651) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.FrameLayout.layoutChildren(FrameLayout.java:515) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.widget.FrameLayout.onLayout(FrameLayout.java:450) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.View.layout(View.java:15141) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewGroup.layout(ViewGroup.java:4862) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2323) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2029) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1192) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6231) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.Choreographer.doCallbacks(Choreographer.java:591) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.Choreographer.doFrame(Choreographer.java:560) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.os.Handler.handleCallback(Handler.java:808) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.os.Handler.dispatchMessage(Handler.java:103) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.os.Looper.loop(Looper.java:193) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at android.app.ActivityThread.main(ActivityThread.java:5291) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at java.lang.reflect.Method.invokeNative(Native Method) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at java.lang.reflect.Method.invoke(Method.java:515) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:830) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:646) 
01-16 20:46:42.256 4500-4500/****.chefebook D/ViewGroup:  at dalvik.system.NativeStart.main(Native Method) 

感謝您的時間!

回答

0

如果您的縱向和橫向佈局會是一樣的,那麼能否請您簡單地爲您MainFeed活動清單文件中加入這一行試試。

android:configChanges="orientation|keyboardHidden|screenSize" 

希望這會對你有用。

+0

這不適合我,因爲我有一些在景觀佈局的變化,在肖像圖像有一個特定的高度值,但在landscpae它match_parent,但無論如何感謝 – user3000019

+0

以及可以處理,所有你有要做的就是動態計算高度寬度,並相應地爲你的圖像視圖設置佈局參數。所以基本上你的ImageView的高度將按照如下動態計算。如果(screenWidth

+0

嘿感謝,但即時通訊試圖找到一個解決方案,在那裏我可以節省回收視圖,並再次顯示在屏幕上旋轉 – user3000019