java - ImageAdapter 不能应用于 Fragment 类

标签 java android android-fragments

我正在尝试按照 ImageView 和 GalleryView 教程在 fragment 类中添加一个 galleryview,但是出现无法将 ImageAdapter 应用于 Tab1Fragment 类的错误,我不知道如何解决它。

enter image description here

fragment 类

package eu.lucazanini;

import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.Toast;

import eu.lucazanini.DialogHelper;


public class Tab2Fragment extends Fragment{


    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.tab2, container, false);

        GridView gridview = (GridView) gridview.findViewById(R.id.gridview);
        gridview.setAdapter(new ImageAdapter(this);

        gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {
                Toast.makeText(getActivity(), "" + position,
                        Toast.LENGTH_SHORT).show();
            }
        });
    }
}

ImageAdapter 类 - 此类中没有显示错误,仅在 Fragment 类中显示

package eu.lucazanini;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {

    private Context mContext;

    public ImageAdapter(Context c) {
        mContext = c;
    }

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

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

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

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView;
        if (convertView == null) { // if it's not recycled, initialize some
            // attributes
            imageView = new ImageView(mContext);
            imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
            imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imageView.setPadding(8, 8, 8, 8);
        } else {
            imageView = (ImageView) convertView;
        }

        imageView.setImageResource(mThumbIds[position]);
        return imageView;
    }

    // references to our images
    private Integer[] mThumbIds = { R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, R.drawable.sample_0, R.drawable.sample_1, R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4, R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7 };
}

最佳答案

首先,您应该将返回行 return inflater.inflate(R.layout.tab2, container, false); 移动到您的 onCreateView 的末尾,因为所有其他行都将无法访问。

此外,您应该以这种方式更正 onCreateView :

View view = inflater.inflate(R.layout.tab2, container, false);

    GridView gridview = (GridView) view.findViewById(R.id.gridview);
    gridview.setAdapter(new ImageAdapter(getActivity());

    .
    .
    .

    return view ;

你应该给它传递一个上下文。您可以使用 getActivity()。您还缺少右括号。所以,将错误的行替换为

new ImageAdapter(getActivity()) ;

关于java - ImageAdapter 不能应用于 Fragment 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35488565/

相关文章:

android 应用程序无限运行 onPreDraw

java - 从数据库中选取数据时的动态 ListView 或 TextView

java - fragment 和垃圾收集器

android 恢复应用程序的默认首选项

java - 在构造函数中用套接字填充ArrayList?

java - 如何在序列化后获取类型的长度

java - 获取 JPA @OneToMany 集合返回空

java - 在 OpenGL ES(在 Android 上)中创建复杂 3D 绘图的方法?

android - ScrollView 不适用于 Fragment 中的 ConstraintLayout

java - Maven - 无法执行目标 org.apache.maven.plugins :maven-clean-plugin:2. 4.1:clean