0

每当我单击ImageView具有 的OnClickListener时,我都会在屏幕底部获得URL那个用于下一个的对象,该对象View尚未出现在屏幕上。

    public View getView(int position, View convertView, ViewGroup parent){
    View rowView = convertView;

    if(rowView == null){
        rowView = inflater.inflate(R.layout.listitem, null);

        //Creëer een Viewholder om alles statisch op te slaan in het geheugen
        holder = new ViewHolder();
        holder.title = (TextView) rowView.findViewById(R.id.title);
        holder.subreddit = (TextView)rowView.findViewById(R.id.subreddit);
        holder.source = (TextView)rowView.findViewById(R.id.source);
        holder.score = (TextView)rowView.findViewById(R.id.score);
        holder.image = (ImageView)rowView.findViewById(R.id.imageView1);
        holder.image.setTag(position);
        rowView.setTag(holder);
    }
    else{
        holder = (ViewHolder) rowView.getTag();
    }


    holder.image.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent i = new Intent();
            i.setAction("com.tolgap.json.TEST");
            i.putExtra("page", holder.thing.url);
            context.startActivity(i);
        }

    });

    holder.thing = gegevens.get(position).data;
    holder.title.setText(holder.thing.title);
    holder.subreddit.setText(holder.thing.subreddit);
    holder.source.setText(holder.thing.domain);
    holder.score.setText(holder.thing.score);
    holder.image.setImageBitmap(plaatjes.get(position));        

    return rowView;
}  

这是代码ViewHolder

static class ViewHolder{
    Result thing;
    TextView title;
    TextView subreddit;
    TextView source;
    TextView score;
    ImageView image;
}

我已经阅读了一些关于使用该setTag()方法的内容,并且我已经尝试过这个,但我并没有完全理解我必须作为标签放置的内容。

4

2 回答 2

1

Result将数据对象存储在 中是没有意义的ViewHolder

static class ViewHolder{
    TextView title;
    TextView subreddit;
    TextView source;
    TextView score;
    ImageView image;
}

getView()方法:

//...
else{
    holder = (ViewHolder) rowView.getTag();
}
Result obj = gegevens.get(position).data;
holder.image.setTag(obj.url); // It's a String I guess?!?
holder.image.setOnClickListener(new OnClickListener(){

    @Override
    public void onClick(View v) {
        String toPass = (String) v.getTag();
        Intent i = new Intent();
        i.setAction("com.tolgap.json.TEST");
        i.putExtra("page", toPass);
        context.startActivity(i);
    }

});
holder.title.setText(obj.title);
holder.subreddit.setText(obj.subreddit);
holder.source.setText(obj.domain);
holder.score.setText(obj.score);
holder.image.setImageBitmap(plaatjes.get(position)); 
return rowView;
}
于 2012-04-30T19:00:34.373 回答
0

你在哪里声明持有者变量?将其设为局部最终变量,看看是否能解决您的问题。

于 2012-04-30T18:53:49.190 回答