Android,如何动态更改 ListView 的 ImageView 项?

标签 android image listview dynamic listadapter

我有一个 list 。每行包括左侧的图像和右侧的两个 TextView 。 基于服务器标志,我的应用程序打开系统媒体播放器或打开另一个 Activity 来显示新闻详细信息。

在我的适配器中,我想在视频图像(不是新闻图像)上添加另一个图像。因此,在 Row 的 XML 文件中,我有另一个 ImageView ,其可见性设置为“不可见”,我想将视频的每一行设置为“可见”。

getView()方法是这样的:

@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;        

            if (convertView == null) {
                convertView     = myInflater.inflate(R.layout.list_news_adapter, null);
                holder          = new ViewHolder();
                holder.ivIcon   = (ImageView)   convertView.findViewById(R.id.list_news_icon);
                holder.ivPlay   = (ImageView)   convertView.findViewById(R.id.list_news_PlayIcon);
                holder.tvTitle  = (TextView)    convertView.findViewById(R.id.list_news_title);
                holder.tvDate   = (TextView)    convertView.findViewById(R.id.list_news_date);

                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.tvTitle.setText(mLatestNews.getTitle().get(position));
            holder.tvDate.setText(localTime.get(position));

            if(mLatestNews.getType().get(position).equalsIgnoreCase("VIDEO"))
                holder.ivPlay.setVisibility(View.VISIBLE);

            // Load and display image
            String imageUrl = (mLatestNews.getImageLink().get(position));
            imageUrl = imageUrl.trim().replaceAll(" ", "%20");
            imageLoader.displayImage(imageUrl, holder.ivIcon, options);

            return convertView;
    }

    static class ViewHolder {
        ImageView ivIcon;
        ImageView ivPlay;
        TextView tvTitle;
        TextView tvDate;
    }

通常列表的前四项是视频,其余是新闻。当我运行该应用程序时,对于某些新闻项目,不仅会激活 4 个第一个项目,甚至第二个图像也会被激活(设置为可见)。

正确的结果如下图所示: enter image description here

但滚动列表后,第二个图像(白色三角形)添加到新闻项中。就像这个图片: enter image description here

我不知道为什么会发生这种情况。任何建议将不胜感激。

最佳答案

天呐!!!

它只需要“其他”。我把代码改成了这样:

if(mLatestNews.getType().get(position).equalsIgnoreCase("VIDEO"))
                holder.ivPlay.setVisibility(View.VISIBLE);
            else
                holder.ivPlay.setVisibility(View.INVISIBLE);

现在,它正在工作。

关于Android,如何动态更改 ListView 的 ImageView 项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11043974/

相关文章:

java - 可以更改 CustomListview 背景样式吗?

image - 如何使用 power shell 捕获 VM 创建类型为 "Specialized"的 Azure VM 镜像?或如何创建 RM VM 的专用镜像?

javascript - 从PHP中的字符串获取多个图像src

android - 键盘出现时不显示 EditText

c# - 在 ListViewRenderer 上使用 CachingStrategy 导致属性错误

android - 将预览数据转换为位图?

android - 以编程方式设置 TextInputLayout 提示文本颜色和 float 标签颜色

java - 如何在不使用任何加密格式的情况下使用 "PUSH"检索 Firebase 中的子数据

jquery - 使用 if/else 在 Jquery 中切换/更改 CSS 背景图像

具有时间相关任务的 Android 性能