在ListViewAdapter中的onClickListener方法中使用holder变量

时间:2015-03-24 19:34:28

标签: android listview android-viewholder

对于ListView我已经制作了持有者对象和一切。如果convertView为null,则初始化它,否则获取标记。

我是根据某些条件以编程方式将ImageView添加到列表行。这也是我在持有人中添加的。

现在视图正在重复使用。所有观点都以ImageView结束。 我怀疑它是因为我动态添加的ImageView

我该如何实现?

提前致谢。

static class ViewHolder{

    TextView MessageText;
    TextView Delivery_Date;
    TextView Time;
    RelativeLayout frame_layout;
    ImageView image_view;
    ProgressBar progress_bar;
} 

@Override
public View getView(final int position, View view, ViewGroup parent) {

    View rowView;
    rowView = view;
    pos  = position;
    ViewHolder holder = null;

    if(rowView==null)
    {
        rowView = context.getLayoutInflater().inflate(R.layout.message_row, null);
        holder = new ViewHolder();
        holder.MessageText = (TextView) rowView.findViewById(R.id.message_text);
        holder.Delivery_Date = (TextView) rowView.findViewById(R.id.delivery_date);
        holder.Time = (TextView) rowView.findViewById(R.id.time);
        holder.frame_layout = (RelativeLayout) rowView.findViewById(R.id.frame_layout);
        rowView.setTag (holder);   
    }
    else
    {
        /* We recycle a View that already exists */
        holder = (ViewHolder) rowView.getTag();
    }

    holder.image_view = new ImageView(context);
    holder.image_view.setImageResource(R.drawable.ic_action_download);
    holder.image_view.setMinimumHeight(40);
    holder.image_view.setMinimumWidth(40);
    final ProgressBar progress_bar = new ProgressBar(context, null, android.R.attr.progressBarStyleLarge);

    if(// I want to add image condition)
    {
        final ViewHolder final_holder = holder; 
        holder.frame_layout.addView(holder.image_view);
        holder.MessageText.setVisibility(View.GONE);
        if(//I want to add ImageView)
        {
            Bitmap image = assigning image;
            if(image!=null)
            {   holder.image_view.getLayoutParams().width = intendedWidth ;
                holder.image_view.getLayoutParams().height =    intendedHeight ;
                holder.image_view.setPadding(10,0,20,0);
                holder.image_view.setImageBitmap(image);
            }
            else {
                holder.image_view.setOnClickListener(new OnClickListener(){
                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        final_holder.frame_layout.addView(progress_bar);
                        final_holder.frame_layout.removeView(final_holder.image_view);
                        Download_image download_image = new Download_image(context, MessageList.subscription_db, MessageList.service_id_clicked+"", MessageList.single_service_info.messages.get(position).MessageID);
                        download_image.execute();
                    }
                });
            }
        }
        else{
            holder.image_view.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    final_holder.frame_layout.addView(progress_bar);
                    Download_image download_image = new Download_image(context, MessageList.subscription_db, MessageList.service_id_clicked+"", MessageList.single_service_info.messages.get(position).MessageID);
                    download_image.execute();
                    }
                });
        }
    }
}

0 个答案:

没有答案