4 つの異なるレイアウトを動的に拡張する ListView があります。リストビューのすべての項目で、共通のものは 3 つのボタンです。好き、嫌い、コメント。したがって、いいねをクリックすると、いいねに関連するプロフィール写真を含むギャラリーが表示されます。嫌いやコメントも同じです。クリックすると適切なデータが表示されますが、下にスクロールしてそのアイテムが表示されていないときに、上にスクロールしてそのアイテムを表示すると、他のボタンクリックでビューが変更されるという問題が発生します。これは、ListView のすべての項目で発生します 緊急の助けが必要です getView のコード:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
mInflater= LayoutInflater.from(mContext);
pos=position;
if(convertView==null){
Log.e("--------Inside---------", "convertView==null");
holder= new Holder();
convertView = mInflater.inflate(R.layout.custom_stream_list, null);
holder.childView= (LinearLayout) convertView.findViewById(R.id.view_to_inflate);
holder.myGallery= (Gallery) convertView.findViewById(R.id.myGallery_stream);
holder.like= (ImageView) convertView.findViewById(R.id.like_stream);
holder.dislike =(ImageView) convertView.findViewById(R.id.dislike_stream);
holder.comment = (ImageView) convertView.findViewById(R.id.comment_stream);
holder.commentLayout = (RelativeLayout) convertView.findViewById(R.id.comment_view_to_inflate);
holder.comment_name = (TextView) convertView.findViewById(R.id.comment_name);
holder.comment_description = (TextView) convertView.findViewById(R.id.comment_description);
holder.comment_time = (TextView) convertView.findViewById(R.id.comment_time);
convertView.setTag(holder);
}else {
Log.e("--------Inside---------", "else Statement");
holder= (Holder) convertView.getTag();
}
holder.myGallery.setVisibility(View.INVISIBLE);
holder.like.setTag(holder);
holder.dislike.setTag(holder);
holder.comment.setTag(holder);
holder.myGallery.setSpacing(5);
holder.like.setOnClickListener(this);
holder.dislike.setOnClickListener(this);
holder.comment.setOnClickListener(this);
if((position%4)==0){
Log.e("--------Inside---------", "position==0");
followLayoutView = mInflater.inflate(R.layout.abc, null);
holder.news_titile=(TextView) followLayoutView.findViewById(R.id.news_article_titile);
holder.news_description= (TextView) followLayoutView.findViewById(R.id.news_article_description);
holder.childView.removeAllViews();
holder.childView.addView(followLayoutView);
} if((position%4)==1){
Log.e("--------Inside---------", "position==1");
followLayoutView1 = mInflater.inflate(R.layout.xyz, null);
holder.match_event_title= (TextView) followLayoutView1.findViewById(R.id.match_events_stream_titile);
holder.match_event_time= (TextView) followLayoutView1.findViewById(R.id.following_time);
holder.match_event_description= (TextView) followLayoutView1.findViewById(R.id.match_events_stream_description);
holder.childView.removeAllViews();
holder.childView.addView(followLayoutView1);
} if((position%4)== 2){
Log.e("--------Inside---------", "position==2");
followLayoutView2 = mInflater.inflate(R.layout.pqr, null);
holder.match_event_title= (TextView) followLayoutView2.findViewById(R.id.match_events_stream_titile);
holder.match_event_time= (TextView) followLayoutView2.findViewById(R.id.following_time);
holder.match_event_description= (TextView) followLayoutView2.findViewById(R.id.match_events_stream_description);
holder.childView.removeAllViews();
holder.childView.addView(followLayoutView2);
} if((position%4)==3){
Log.e("--------Inside---------", "position==3");
followLayoutView3 = mInflater.inflate(R.layout.mno, null);
holder.video_background= (ImageView) followLayoutView3.findViewById(R.id.video_background);
holder.play = (ImageView) followLayoutView3.findViewById(R.id.video_play);
holder.childView.removeAllViews();
holder.childView.addView(followLayoutView3);
}
return convertView;
}