更新图库中的文本视图

发布于 2024-11-28 06:00:54 字数 2154 浏览 5 评论 0原文

我试图在使用 updateCaption 方法创建图库中的文本视图后更新它,但是,只有图库中的第一个文本视图得到更新。当我打印出我的文本视图时,它们都有相同的 ID,如 android.widget.TextView@40942d60。

public class ImageAdapter extends BaseAdapter {

    private static LayoutInflater inflater = null;
    private int[] image;
    private TextView caption;

    public ImageAdapter(Context context) {
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        image = new int[4];

        for (int i = 0; i < image.length; i++)
        {
              image[i] = R.drawable.image;
        }
    }

    public void updateCaption(String text, int position)
    {
        System.out.println(position + ": text");
        caption.setText(text);

        System.out.println(caption);
    }

    public int getCount() {
        return image.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public static class ViewHolder{
        public TextView text, dssnum, scnum;
        public ImageView image;
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        View vi = convertView;
        ViewHolder holder;

        if (convertView == null)
        {
            vi = inflater.inflate(R.layout.caption, null);
            holder = new ViewHolder();
            caption = holder.text = (TextView) vi.findViewById(R.id.textView1);
            holder.scnum = (TextView) vi.findViewById(R.id.scnum);
            holder.dssnum = (TextView) vi.findViewById(R.id.dss_num);
            holder.image = (ImageView) vi.findViewById(R.id.image);
            vi.setTag(holder);
        }
        else
            holder = (ViewHolder) vi.getTag();


        holder.dssnum.setText("Unavailable");

        holder.image.setImageResource(image[position]);
        holder.text.setText("Not available.");
        return vi;
    }
}

有谁知道我做错了什么?

添加:我如何使用 updateCaption

for (int j = 0; j < listOfList.get(i).size(); j++)
{
        galleryImageAdapter.updateCaption("test " + j, j);
 }

I am trying to update the textview in my gallery after it has been created using my updateCaption method, however, only the first textview in the gallery gets updated. When I print out my textview, they all have the same ID like android.widget.TextView@40942d60.

public class ImageAdapter extends BaseAdapter {

    private static LayoutInflater inflater = null;
    private int[] image;
    private TextView caption;

    public ImageAdapter(Context context) {
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        image = new int[4];

        for (int i = 0; i < image.length; i++)
        {
              image[i] = R.drawable.image;
        }
    }

    public void updateCaption(String text, int position)
    {
        System.out.println(position + ": text");
        caption.setText(text);

        System.out.println(caption);
    }

    public int getCount() {
        return image.length;
    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public static class ViewHolder{
        public TextView text, dssnum, scnum;
        public ImageView image;
    }

    public View getView(int position, View convertView, ViewGroup parent) 
    {
        View vi = convertView;
        ViewHolder holder;

        if (convertView == null)
        {
            vi = inflater.inflate(R.layout.caption, null);
            holder = new ViewHolder();
            caption = holder.text = (TextView) vi.findViewById(R.id.textView1);
            holder.scnum = (TextView) vi.findViewById(R.id.scnum);
            holder.dssnum = (TextView) vi.findViewById(R.id.dss_num);
            holder.image = (ImageView) vi.findViewById(R.id.image);
            vi.setTag(holder);
        }
        else
            holder = (ViewHolder) vi.getTag();


        holder.dssnum.setText("Unavailable");

        holder.image.setImageResource(image[position]);
        holder.text.setText("Not available.");
        return vi;
    }
}

Does anyone know what I am doing wrong?

Added: how I am using updateCaption

for (int j = 0; j < listOfList.get(i).size(); j++)
{
        galleryImageAdapter.updateCaption("test " + j, j);
 }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陈独秀 2024-12-05 06:00:54

我认为这是由于这一行...

caption = holder.text = (TextView) vi.findViewById(R.id.textView1);

一旦创建了所有convertView,您的标题将始终指向最后一个convertView的textview。

I think this is due to this line...

caption = holder.text = (TextView) vi.findViewById(R.id.textView1);

once all convertView is created, your caption will always point to the textview of the last convertView.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文