TabLayout dentro de fragmento da mala vista de elementos

Estoy trabajando en el proyecto que utilizo Tablayout dentro de fragmento, tengo tres pestañas donde se recopilan datos de servicio web, esta parte de la aplicación muestran preguntas, tenemos tres categorías una para la reciente, la segunda para un contestó tercero para toda la vista de la pregunta

Aquí está mi situación mi desarrollador web me diseño el artículo de la pregunta de vuelta del servicio de Web, comparten todos la misma estructura en artículo vuelto pero los datos cambiaron según el requisito.

public class Questions_Fragment extends Fragment { private TabLayout mTablayout; private ViewPager mViewpager; public static Questions_Fragment newInstance() { Questions_Fragment fragment = new Questions_Fragment(); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.questions_layout, null); mViewpager = (ViewPager) v.findViewById(R.id.viewPager); setupViewPager(mViewpager); mTablayout = (TabLayout) v.findViewById(R.id.tabs); mTablayout.setupWithViewPager(mViewpager); return v; } private void setupViewPager(ViewPager mViewpager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager()); adapter.addFrag( QuestionsFragModel.newInstance(VolleyRequestHandler.RECENT_INT) , getResources().getString(R.string.newest)); adapter.addFrag( QuestionsFragModel.newInstance(VolleyRequestHandler.UNANSWER_INT) , getResources().getString(R.string.notanswered)); adapter.addFrag( QuestionsFragModel.newInstance(VolleyRequestHandler.ALLPOSTS_INT) , getResources().getString(R.string.allposts)); mViewpager.setAdapter(adapter); } 

Mi clase del adaptador del paginador de la visión extiendo los datos de FragmentStatePagerAdapter podría cambiar cada vez que la lengüeta abierta del usuario

 public class ViewPagerAdapter extends FragmentStatePagerAdapter { private List<Fragment> mFragmentList = new ArrayList<>(); private List<String> mFragmentTitleList= new ArrayList<>(); public ViewPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } public void addFrag(Fragment fra , String title){ mFragmentList.add(fra); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } } 

Pero veo que me da una visión equivocada, muestra imagen en cuestión no tengo imagen y da respuesta a pregunta sin respuesta

Lo siento por mi larga pregunta, pero quiero saber lo que está mal con mi código?

Mi adaptador de lista

 public class ListViewAdapter extends RecyclerView.Adapter<ListViewAdapter.ViewHolder> { private Context _Context; private List<QuestionItem> Questions = new ArrayList<>(); private API api; private int num; private int lastPosition = -1; public static final String BASE_POST_URl = "url...."; public ListViewAdapter(Context context, List<QuestionItem> Questions) { this._Context = context; this.Questions = Questions; api = new API(context); } public ListViewAdapter(Context context, List<QuestionItem> Questions, int num) { this._Context = context; this.Questions = Questions; this.num = num; api = new API(context); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { LayoutInflater inflater = LayoutInflater.from(_Context); View itemView = inflater.inflate(R.layout.question_row, parent, false); return new ViewHolder(itemView); } @Override public void onBindViewHolder(final ViewHolder holder, final int position) { Typeface tf = Typeface.createFromAsset(_Context.getAssets(), "fonts/GE_SS_Two_Bold.otf"); Typeface tfreg = Typeface.createFromAsset(_Context.getAssets(), "fonts/GE_SS_Two_Light.otf"); ImageLoader _ImageLoader = MySingleton.getInstance(_Context).getmImageLoader(); if (Questions.get(position).user.userimageURL != null) { if (!Questions.get(position).user.getUserimageURL().isEmpty()) { //holder.userimageprog.setVisibility(View.VISIBLE); holder.imageView.setImageUrl(Profile_Fragment.BASE_URL + Questions.get(position).user.getUserimageURL(), _ImageLoader); } } if(Questions.get(position).Que_image_url != null){ if (!Questions.get(position).getQue_image_url().isEmpty()) { holder._FrameLayout.setVisibility(View.VISIBLE); holder.post_img.setVisibility(View.VISIBLE); //holder.post_img_pro.setVisibility(View.VISIBLE); holder.post_img.setImageUrl(BASE_POST_URl + Questions.get(position).getQue_image_url(), _ImageLoader); } } holder.imageView.setDefaultImageResId(R.drawable.profile); holder.username.setTypeface(tf); holder.desc.setTypeface(tfreg); holder.Date.setTypeface(tfreg); holder.AnswersCount.setTypeface(tfreg); if(Questions.get(position).user.username != null){ holder.username.setText(Questions.get(position).user.username); } if(Questions.get(position).Que_Content != null){ holder.desc.setText(Questions.get(position).Que_Content); } if(Questions.get(position).category != null){ holder.Category.setText(Questions.get(position).category); } if(Questions.get(position).Que_Date != null){ holder.Date.setText(Questions.get(position).Que_Date); } if (!Questions.get(position).getComment().isEmpty()) { holder.arrow.setVisibility(View.VISIBLE); holder.AnswersCount.setVisibility(View.VISIBLE); holder.AnswersCount.setText(_Context.getResources().getString(R.string.youhaveanswer)); } holder.arrow.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent (_Context , ViewAnswers.class); intent.putExtra("passedobject", (Parcelable) Questions.get(position)); _Context.startActivity(intent); } }); // Animation animation = null; // animation = AnimationUtils.loadAnimation(_Context, // R.anim.up_from_bottom); // animation.setDuration(500); // view.setAnimation(animation); // animation = null; // // Animation animation = AnimationUtils.loadAnimation(_Context, // (pos > lastPosition) ? R.anim.up_from_bottom // : R.anim.down_from_top); // view.startAnimation(animation); // lastPosition = pos; } @Override public long getItemId(int position) { return position; } @Override public int getItemCount() { return Questions.size(); } public class ViewHolder extends RecyclerView.ViewHolder { protected NetworkImageView imageView, post_img; protected TextView desc, Category, username, Date, AnswersCount; protected ProgressBar userimageprog, post_img_pro; protected ImageView arrow; protected FrameLayout _FrameLayout; public ViewHolder(View itemView) { super(itemView); imageView = (NetworkImageView) itemView.findViewById(R.id.ques_user_img); desc = (TextView) itemView.findViewById(R.id.ques_content); Category = (TextView) itemView.findViewById(R.id.category); post_img = (NetworkImageView) itemView.findViewById(R.id.post_img); userimageprog = (ProgressBar) itemView.findViewById(R.id.userimgae_prog); post_img_pro = (ProgressBar) itemView.findViewById(R.id.post_prog); username = (TextView) itemView.findViewById(R.id.username_ques); Date = (TextView) itemView.findViewById(R.id.date); AnswersCount = (TextView) itemView.findViewById(R.id.answers_con); arrow = (ImageView) itemView.findViewById(R.id.imageView1); _FrameLayout = (FrameLayout)itemView.findViewById(R.id.frameLayout2); } } } 

QuestionsFragModel ver

 public class QuestionsFragModel extends Fragment implements OnClickListener { private RecyclerView Ques_list; private ProgressBar list_prog; private ListViewAdapter adapter; private List<QuestionItem> Questions = new ArrayList<>(); private TextView reload; private VolleyRequestHandler _VolleyRequestHandler; private int CONST_TYPE = 0; public static final String PASSED_INT = "passed_number"; private CoordinatorLayout _coordiatelayout; static QuestionsFragModel newInstance(int type) { QuestionsFragModel f = new QuestionsFragModel(); Bundle bundle = new Bundle(); bundle.putInt(PASSED_INT , type); f.setArguments(bundle); return f; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.question_layout, container, false); CONST_TYPE = getArguments() != null ? getArguments().getInt(PASSED_INT) : 7; _VolleyRequestHandler = new VolleyRequestHandler(getActivity()); _coordiatelayout = (CoordinatorLayout) v.findViewById(R.id.coordiatelayout); Ques_list = (RecyclerView) v.findViewById(R.id.questionlist); Ques_list.setLayoutManager(new LinearLayoutManager(getActivity())); adapter = new ListViewAdapter(getActivity(), Questions); Ques_list.setAdapter(adapter); list_prog = (ProgressBar) v.findViewById(R.id.progressbar); reload = (TextView) v.findViewById(R.id.reload); getQuestationsPosts(); reload.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View position) { getQuestationsPosts(); } }); final FloatingActionButton floatingView = (FloatingActionButton) v.findViewById(R.id.FloatingView); if (floatingView != null) { floatingView.setOnClickListener(this); } return v; } public void getQuestationsPosts() { API api = new API(getActivity()); if (api.isNetworkConnected()) { list_prog.setVisibility(View.VISIBLE); reload.setVisibility(View.GONE); FetchQuestationsFromWeb(); } else { Snackbar.make(_coordiatelayout, getResources().getString(R.string.nointernet), Snackbar.LENGTH_LONG).show(); Ques_list.setVisibility(View.GONE); reload.setVisibility(View.VISIBLE); } } private void onSuccessResponse(Object response){ list_prog.setVisibility(View.GONE); reload.setVisibility(View.GONE); Ques_list.setVisibility(View.VISIBLE); if(Questions != null){ Questions.clear(); } Questions = (List < QuestionItem>) response; adapter = new ListViewAdapter(getActivity() ,Questions); Ques_list.setAdapter(adapter); } private void onErrorResponse(String error){ list_prog.setVisibility(View.GONE); reload.setVisibility(View.VISIBLE); Snackbar.make(_coordiatelayout , error , Snackbar.LENGTH_LONG).show(); } private void FetchQuestationsFromWeb() { _VolleyRequestHandler.HandleRequests(Request.Method.POST , CONST_TYPE, null, new VolleyResponseCallBack() { @Override public void RequestSuccess(Object response) { onSuccessResponse(response); } @Override public void RequestFailed(String error) { onErrorResponse(error); } }); } @Override public void onClick(View arg0) { startActivity(new Intent(getActivity(), Add_Question.class)); } } 

No sé porqué usted utiliza FragmentStatePagerAdapter vez de FragmentPagerAdapter cuando usted tiene solamente 3 fragmentos.

AFAIK, FragmentStatePagerAdapter es mejor para el rendimiento si tiene una gran cantidad de fragmentos, ya que no almacena todo el fragmento en la memoria.

De todos modos, FragmentStatePagerAdapter salvará el paquete de fragmentos de savedInstanceState cuando se destruye. Y cuando el usuario navega hacia atrás, el nuevo fragmento será restaurado usando el estado del fragmento.

Así que usted necesita para comprobar savedInstanceState antes:

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.question_layout, container, false); if (savedInstanceState!=null){ // restore your state from "savedInstanceState" } else{ CONST_TYPE = getArguments() != null ? getArguments().getInt(PASSED_INT) : 7; } } 

Si alguien se enfrenta a algún problema, es causa de uso si la sentencia en el adaptador, simplemente se puede utilizar si sólo sin otro

Ejemplo que utilizo si sólo

 if (Questions.get(position).user.userimageURL != null) { if (!Questions.get(position).user.getUserimageURL().isEmpty()) { //holder.userimageprog.setVisibility(View.VISIBLE); holder.imageView.setImageUrl(Profile_Fragment.BASE_URL + Questions.get(position).user.getUserimageURL(), _ImageLoader); } } else{ // I should use else statement as well } 
  • Cómo reemplazar fragmento a otro fragmento en TabLayout y ViewPager
  • ViewPager con la barra de herramientas y TabLayout tiene altura incorrecta
  • CoordinatorLayout + TabView + AnimateView (Desde la parte superior)
  • TabLayout tabs texto que no se muestra
  • Barra de herramientas Android superpuesta TabLayout en CollapsingToolbarLayout
  • ¿Cómo mostrar el contador de notificaciones no leído en Tabs dentro de TabLayout?
  • Cómo utilizar tabContentStart para iniciar el contenido desde la mitad de la pantalla del dispositivo
  • Programe ocultar / mostrar el diseño de soporte de Android Android TabLayout dentro de AppBarLayout
  • Android TabLayout dentro de Fragmento
  • Android Tablayout Establecer textAllCaps a False no funciona
  • Cambiar la dirección de desplazamiento de viewPager
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.