Java怪问题

标签 java android

我在 Java 方面有点差,或者更确切地说是 OOP,我有一个奇怪的问题,我想知道这是否可能。我有课

private ArrayList<?> data;
public A(Activity a, ArrayList<?> mStatus)
{
    activity = a;
    data = mStatus;
    inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader = new ImageLoader(activity.getApplicationContext());
}

后来我用了

public View getView(int position, View convertView, ViewGroup parent)
{
    View vi = convertView;
    ViewHolder holder;
    if (convertView == null)
    {
        vi = inflater.inflate(R.layout.custom_gallery, null);
        holder = new ViewHolder();
        holder.text = (TextView) vi.findViewById(R.id.text);
        holder.image = (ImageView) vi.findViewById(R.id.image);
        holder.root = (LinearLayout) vi.findViewById(R.id.root);
        vi.setTag(holder);
    }
    else
        holder = (ViewHolder) vi.getTag();

    //I used this that solves my problem
    if(data.get(position) instanceof GalleryTestParser)
    {
        GalleryTestParser mParser = (GalleryTestParser)data.get(position);
        holder.text.setText(mParser.Name);
        holder.image.setTag(mParser.galleryThumbiPad);
        holder.root.setTag(mParser);
        imageLoader.DisplayImage(mParser.galleryThumbiPad, activity, holder.image);
    }


    return vi;
}

编辑:如果数据是 GalleryTestParser 类型,或者如果不是做其他事情,我想要上面的内容。

早些时候我在尝试 ArrayList<GalleryTestParser> mStatus在构造函数中,但这是特定于类的。我想要的是,我必须以某种方式从 arraylist 的对象知道它是什么类型,以便我将 cast arraylist 对象类型转换为该类型。

这可能吗?

最佳答案

试试这个

public A(Activity a, List<? extends GenericParser> mStatus)

然后从通用基础中继承不同类型的解析器。

不过要小心,如果你需要使用 instanceof 来区分它们,你可能做错了, 实际上只有解析器需要知道它是什么类型!

关于Java怪问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5338474/

相关文章:

java - 在 OSGi 中访问 LeapMotion API 时出现 EXCEPTION_ACCESS_VIOLATION

java - 使用 Maven 将 jar 文件从一个项目复制到另一个项目

java - 我该从哪里开始这个 Android 项目呢?

java - 使用共享首选项保存永久数据?

java - 自定义溢出菜单在 Android API 21 和 23+ 中不会给出相同的结果

java - 三角带三角剖分

java - Android ENOENT 与一些文件

java - 为什么我的 Java split 方法导致打印空行?

java - Geocoder.isPresent() 未定义 Geocoder 类型

android - RecyclerView OnBindViewHolder 意外