ViewHolder ha gonfiato il layout in posizione uniforms e dispari

Ho bisogno di due layout per gonfiarsi sulla base della posizione pari e dispari degli elementi di listview utilizzando ViewHolder. In posizione uniforms ho bisogno di un layout diverso e in posizione Odd un'altra che abbia gli stessi elementi, ma layout diverso. Ho implementato, tuttavia, mi dà layout casuali in posizioni diverse indipendentemente dalla loro posizione. Cosa deve essere fatto per risolverlo. Grazie.

public SimpleAdapter(ArrayList<WishListData> wishDataList, Context context, ListView swipelistview) { super(context, android.R.layout.simple_list_item_1, wishDataList); notifyDataSetChanged(); SimpleAdapter.wishListData = wishDataList; this.swipelistview = swipelistview; mPreferences = new Preferences(context); SCREEN_WIDTH = mPreferences.getScreenWidth(); SCREEN_HEIGHT = mPreferences.getScreenHeight(); mFunctions = new UserFunctions(); this.context = context; imageloader1 = new ImageLoader1(context); userImageLoader = new UserImageLoader(context); } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder viewHolder = null; View row = convertView; if (row == null) { LayoutInflater inflater = ((Activity) context).getLayoutInflater(); System.out.println("position "+ position); if ((position % 2) == 0) { row = inflater.inflate(R.layout.single_wish_view_right, parent, false); } else if ((position % 2) == 1){ row = inflater .inflate(R.layout.single_wish_view, parent, false); } viewHolder = new ViewHolder(); viewHolder.back = (LinearLayout) row .findViewById(R.id.back); viewHolder.lenear = (LinearLayout) row .findViewById(R.id.linear); viewHolder.front = (RelativeLayout) row .findViewById(R.id.front); viewHolder.likeButton = (ImageButton) row .findViewById(R.id.likemain); viewHolder.deathWish = (TextView) row .findViewById(R.id.death_wish); viewHolder.time = (TextView) row .findViewById(R.id.time_wish); viewHolder.name = (TextView) row.findViewById(R.id.name1); viewHolder.commentButton = (ImageButton) row .findViewById(R.id.comment); viewHolder.shareButton = (ImageButton) row .findViewById(R.id.sharemain); viewHolder.helpButton = (ImageButton) row .findViewById(R.id.help); viewHolder.profilePic = (ImageView) row .findViewById(R.id.profile_image); viewHolder.likecount = (TextView) row .findViewById(R.id.likecountadapter); commentcount = (TextView) row .findViewById(R.id.commentcountadapter); viewHolder.tagImg = (ImageView) row .findViewById(R.id.tag_arrow); viewHolder.image1 = (ImageView) row .findViewById(R.id.image1); viewHolder.image2 = (ImageView) row .findViewById(R.id.image2); row.setTag(viewHolder); } else { viewHolder = (ViewHolder) row.getTag(); } mWishesData = wishListData.get(position); viewHolder.wishlikecount = mWishesData.getDeathWishLike(); if ((position % 4) == 0) { viewHolder.lenear.setBackgroundColor(Color.rgb(255, 168, 0)); viewHolder.back.setBackgroundResource(R.drawable.a2bg); viewHolder.tagImg.setBackgroundResource(R.drawable.a11); viewHolder.front.setBackgroundColor(Color.rgb(255, 168, 0)); } else if ((position % 4) == 1) { viewHolder.lenear.setBackgroundColor(Color.rgb(253, 81, 43)); viewHolder.back.setBackgroundResource(R.drawable.a3bg); viewHolder.tagImg.setBackgroundResource(R.drawable.a21); viewHolder.front.setBackgroundColor(Color.rgb(253, 81, 43)); // viewHolder.Adlayout.invalidate(); // viewHolder.Adlayout.setVisibility(View.GONE); } else if ((position % 4) == 2) { viewHolder.lenear.setBackgroundColor(Color.rgb(155, 89, 182)); viewHolder.back.setBackgroundResource(R.drawable.a4bg); viewHolder.tagImg.setBackgroundResource(R.drawable.a31); viewHolder.front.setBackgroundColor(Color.rgb(155, 89, 182)); } else if ((position % 4) == 3) { viewHolder.lenear.setBackgroundColor(Color.rgb(46, 204, 113)); viewHolder.back.setBackgroundResource(R.drawable.a1bg); viewHolder.tagImg.setBackgroundResource(R.drawable.a41); viewHolder.front.setBackgroundColor(Color.rgb(46, 204, 113)); } 

Visualizza titolare:

  • Come utilizzare ScrollView in Android?
  • Come posso avere diversi file manifesti per le versioni di rilascio e di debug?
  • come installare applicazione apk dal mio pc al mio android mobile
  • Come vengono implementate le teste chat di Facebook?
  • C'è una function in Android analoga a "int main" in C / C ++ che contiene il ciclo principale del programma?
  • La cartella dati di applicazioni Android di Google Drive non elenca tutti i bambini
  •  public static class ViewHolder { public int wishlikecount; public int wishcommentcount; LinearLayout back, lenear; RelativeLayout front; TextView deathWish; ImageButton likeButton, commentButton, shareButton, helpButton; TextView time, name, likecount; ImageView tagImg, image1, image2, profilePic; } 

  • Windows - Gestore SDK di Android che non elenca le piattaforms oi pacchetti da installare
  • La schermata a spruzzo causa MenuItem per non apparire
  • orientamento dell'attività di impostazione android per codice
  • Come risolvere il progetto di caricamento in studio di android? Imansible caricare il progetto: java.lang.IllegalStateException: metodo @NotNull
  • Posso scrivere iPhone nativi, Android, Windows, applicazioni BlackBerry utilizzando Python?
  • Android: Come scrivere la row di nuovo nel file CSV?
  • One Solution collect form web for “ViewHolder ha gonfiato il layout in posizione uniforms e dispari”

    Il problema è quando le viste sono riciclate, ListView può restituire un layout "giusto" quando si prevede un layout "sinistro". È necessario ignorare getItemViewType() e getViewTypeCount() nell'implementazione dell'adattatore; questi methods consentono a ListView di fornire il tipo di visualizzazione appropriato quando fornisce una vista riciclata per getView()

     @Override public int getViewTypeCount() { // return the total number of view types. this value should never change at runtime return 2; } @Override public int getItemViewType(int position) { // return a value between 0 and (getViewTypeCount - 1) return position % 2; } @Override public View getView(int position, View convertView, ViewGroup container) { int layoutResource; // determined by view type int viewType = getItemViewType(position); switch(viewType) { case 0: layoutResource = R.layout.list_item_even; break; case 1: layoutResource = R.layout.list_item_odd; break; } ViewHolder holder; if (convertView != null) { holder = (ViewHolder) convertView.getTag(); } else { convertView = inflater.inflate(layoutResource, container, false); holder = new ViewHolder(); ... convertView.setTag(holder); } ... return convertView; } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.