当前位置: 首页 > 知识库问答 >
问题:

如何在标签片段中调用gridView适配器

符棋
2023-03-14

错误:(117,63)错误:不兼容的类型:TabThree碎片无法转换为上下文

错误显示在"new GridViewAdapter(这个,图像,名称);"

公共类TabThreeFragment扩展了片段{

//url for grid images
public static final String DATA_URL = "https://gist.githubusercontent.com/theBoyMo/40b97e688f90a68bfc02/raw/c8463217c22e597c316edb059db410fa38ec26dc/gallery.json";

//Tag values to read from json
public static final String TAG_IMAGE_URL = "image";
public static final String TAG_NAME = "caption";

//GridView Object
private GridView gridView;

//ArrayList for Storing image urls and titles
private ArrayList<String> images;
private ArrayList<String> names;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.tab_three_fragment, container, false);

    // Inflate the layout for this fragment
    gridView = (GridView) rootView.findViewById(R.id.gridView);

    images = new ArrayList<>();
    names = new ArrayList<>();

    getData();
   return rootView;

//返回inflater.inflate(R.layout.tab_three_fragment,容器,false);}

private void getData(){
    //Showing a progress dialog while our app fetches the data from url
   // final ProgressDialog loading = ProgressDialog.show(this, "Please wait...","Fetching data...",false,false);

    //Creating a json array request to get the json from our api
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(DATA_URL,
            new Response.Listener<JSONArray>() {
                @Override
                public void onResponse(JSONArray response) {
                    //Dismissing the progressdialog on response
                  //  loading.dismiss();

                    //Displaying our grid
                    showGrid(response);
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }
    );

    //Creating a request queue

//RequestQueue RequestQueue=截击。newRequestQueue(this);RequestQueue RequestQueue=截击。newRequestQueue(getActivity()。getApplicationContext())//将我们的请求添加到队列requestQueue。添加(jsonArrayRequest);}

private void showGrid(JSONArray jsonArray){
    //Looping through all the elements of json array
    for(int i = 0; i<jsonArray.length(); i++){
        //Creating a json object of the current index
        JSONObject obj = null;
        try {
            //getting json object from current index
            obj = jsonArray.getJSONObject(i);

            //getting image url and title from json object
            images.add(obj.getString(TAG_IMAGE_URL));
            names.add(obj.getString(TAG_NAME));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
    //Creating GridViewAdapter Object
    GridViewAdapter gridViewAdapter = new GridViewAdapter(this,images,names);

    //Adding adapter to gridview
    gridView.setAdapter(gridViewAdapter);
}

}

我的适配器是

公共类GridViewAdapter扩展了BaseAdapter{

//Imageloader to load images
private ImageLoader imageLoader;

//Context
private Context context;

//Array List that would contain the urls and the titles for the images
private ArrayList<String> images;
private ArrayList<String> names;

public GridViewAdapter (Context context, ArrayList<String> images, ArrayList<String> names){
    //Getting all the values
    this.context = context;
    this.images = images;
    this.names = names;
}

@Override
public int getCount() {
    return images.size();
}

@Override
public Object getItem(int position) {
    return images.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //Creating a linear layout
    LinearLayout linearLayout = new LinearLayout(context);
    linearLayout.setOrientation(LinearLayout.VERTICAL);

    //NetworkImageView
    NetworkImageView networkImageView = new NetworkImageView(context);

    //Initializing ImageLoader
    imageLoader = CustomVolleyRequest.getInstance(context).getImageLoader();
   // imageLoader.get(images.get(position), ImageLoader.getImageListener(networkImageView, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert));

    //Setting the image url to load
    networkImageView.setImageUrl(images.get(position),imageLoader);

    //Creating a textview to show the title
    TextView textView = new TextView(context);
    textView.setText(names.get(position));

    //Scaling the imageview
    networkImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    //networkImageView.setLayoutParams(new GridView.LayoutParams(200,200));

    //Adding views to the layout
    //linearLayout.addView(textView);
    linearLayout.addView(networkImageView);

    //Returnint the layout
    return linearLayout;
}

}

共有1个答案

傅琦
2023-03-14

在TabThreeFragment中,替换

GridViewAdapter GridViewAdapter=新的GridViewAdapter(此、图像、名称)

具有

GridViewAdapter gridViewAdapter=new GridViewAdapter(getContext(),图像,名称);

片段不从上下文扩展。

 类似资料:
  • 我有一个使用RecyclerView的列表,我想要的是,当我点击列表项时,它会打开一个片段,我一直在搜索,我只在一个活动中找到了它,但我只在片段中工作,如果我使用活动,它会随着我的操作栏消失,它都在片段中设置。 这是我的适配器类: 我需要将信用卡id发送到片段,调用控制器并从数据库中获取信息,我尝试了使用intent,但只有在使用startActivity(intent)调用活动时才有效。 这里是

  • 我想从我有gridview的MainActivity中打开一个片段。我是android新手,这是第一次使用fragment。这是我的主要活动: 这是我想从gridview打开的片段: 我尝试了FragmentManager fm=getSupportFragmentManager(); FragmentTransaction ft=fm.beginTransaction();ft.replace(

  • 但问题是我想知道如何从类中的片段调用方法?这是我的代码 下面是在活动中工作但在片段中不工作的代码

  • 我正在尝试制作一个选项卡,其中我必须在gridview中显示图像,所以我从一个库中制作了普通选项卡,并制作了一个适配器来显示我的主要活动代码中的图像。 我的片段类。 我已将适配器设置如下: 我能够在活动中创建网格视图,但是我用它来声明类中的图像,但在这里我遇到了错误。我在适配器中声明为适配器将调用图像的 Sso。它正确编译,没有任何错误,但它显示运行时错误错误为 那么如何解决这个问题,我必须声明图

  • 我正在尝试在我的应用程序的三个主屏幕(提要、论坛)之间实现一个简单的滑动操作 在我的情况下,片段并不是同一类的所有实例,而是完全不同的。 M 问题存在于片段页面适配器中。我不确定如何返回 getItem 方法中的每个片段。 我已经尝试了以下内容,但它除了作为有效的返回语句之外没有,并且仍然期待一个: 这是我的一个片段的例子: 这是我的主要活动: 我还尝试定义一个变量电流片段,为每个当语句重新分配它

  • 问题内容: 我有一些碎片。每个片段具有在(=挥动之前不可见的)用。 适配器设置为,这会减慢刷卡速度,因为每次创建时都要载入30个列表项,因为正在创建新的片段。 我的问题是,在空闲时刷卡后是否可以设置适配器?或者,还有更好的方法?扩展SlideDrawer时,该列表需要已经加载。 问题答案: 我的问题是,是否可以在Pager闲置时刷卡后设置适配器? 还有就是,你可以在设置监控的滑动手势。然后,您可以