0
IM的一個問題,我需要一些幫助,回收者看來,機器人回收視圖和旋轉
但是,當我旋轉設備,回收商永遠不會到來回.. 的事情是,即時通訊呼籲onCreate方法異步任務,所以即使我旋轉設備時,onCreate方法將被再次調用,並重新填充回收的觀點,但在這種情況下,那不會發生。我怎樣才能解決這個問題?
這是我的活動代碼:
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)
感謝您的時間!
這不適合我,因爲我有一些在景觀佈局的變化,在肖像圖像有一個特定的高度值,但在landscpae它match_parent,但無論如何感謝 – user3000019
以及可以處理,所有你有要做的就是動態計算高度寬度,並相應地爲你的圖像視圖設置佈局參數。所以基本上你的ImageView的高度將按照如下動態計算。如果(screenWidth
嘿感謝,但即時通訊試圖找到一個解決方案,在那裏我可以節省回收視圖,並再次顯示在屏幕上旋轉 – user3000019