2017-09-15 42 views
0

错误:(117,63)错误:不兼容的类型:TabThreeFragment不能转换到上下文如何调用标签片段内GRIDVIEW适配器

误差表示“新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 

//请求队列请求队列= Volley.newRequestQueue(本); RequestQueue requestQueue = Volley.newRequestQueue(getActivity()。getApplicationContext()); //将我们的请求添加到队列中 requestQueue.add(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; 
} 

}

+0

将代码粘贴到GridViewAdapter类中。将新的GridViewAdapter(this,图像,名称)替换为新的GridViewAdapter(getActivity,图像,名称) –

回答

0

在TabThreeFragment,更换

GridViewAdapter gridViewAdapter = new GridViewAdapter(this,images,names);

GridViewAdapter gridViewAdapter = new GridViewAdapter(getContext(),images,names);

片段不从语境延伸。

+0

谢谢,这是行之有效的 – Muhsin