带有自定义适配器的Gridview不工作,且适配器getView未在Android中运行

带有自定义适配器的Gridview不工作,且适配器getView未在Android中运行,android,android-gridview,Android,Android Gridview,我正在使用Android Studio开发一个Android应用程序。在我的应用程序中,我需要使用grid view,因为我的应用程序包含一些功能,比如Facebook newfeeds。我正在使用截击从服务器请求数据 我为网格视图创建了一个自定义阵列适配器。但问题是,即使截击请求成功并且包含了这么多项,也没有任何内容绑定到网格视图。我百分之百确信截击和服务器端工作正常。但没有任何内容绑定到网格视图。下面是我的代码 我的自定义适配器类 public class ItemListAdapter e

我正在使用Android Studio开发一个Android应用程序。在我的应用程序中,我需要使用grid view,因为我的应用程序包含一些功能,比如Facebook newfeeds。我正在使用截击从服务器请求数据

我为网格视图创建了一个自定义阵列适配器。但问题是,即使截击请求成功并且包含了这么多项,也没有任何内容绑定到网格视图。我百分之百确信截击和服务器端工作正常。但没有任何内容绑定到网格视图。下面是我的代码

我的自定义适配器类

public class ItemListAdapter extends ArrayAdapter<Item>{
    private ArrayList<Item> values;
    private Context context;

    static class ViewHolder{
        public ImageView imageViewItemImg;
        public TextView tvItemName;
        public TextView tvItemPrice;
        public TextView tvItemLikeCount;
    }

    public ItemListAdapter(Context contextParam,ArrayList<Item> valuesParam)
    {
        super(contextParam,-1,valuesParam);
        this.context = contextParam;
        this.values = valuesParam;
    }
    @Override
    public View getView(final int position,View convertView,ViewGroup parent)
    {
        View rowView = convertView;
        ViewHolder viewHolder;
        if(rowView==null)
        {
            LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            rowView = layoutInflater.inflate(R.layout.item_list_item_view,null);

            viewHolder = new ViewHolder();
            viewHolder.imageViewItemImg = (ImageView) rowView.findViewById(R.id.item_list_view_item_image);
            rowView.setTag(viewHolder);
        }
        else{
            viewHolder  = (ViewHolder) rowView.getTag();
        }
        rowView.setId(values.get(position).getId());
        if(values.get(position).getMediumImageUrl()!=null && values.get(position).getMediumImageUrl().isEmpty()==false)
        {
            Picasso.with(context).load(values.get(0).getMediumImageUrl()).into(viewHolder.imageViewItemImg);
        }
        return rowView;
    }
}
公共类ItemListAdapter扩展了ArrayAdapter{
私有数组列表值;
私人语境;
静态类视窗夹{
公共图像查看图像查看项目img;
公共文本视图TVTItemName;
公共文本视图tvItemPrice;
公共文本视图TVTItemLikeCount;
}
public ItemListAdapter(上下文上下文参数,ArrayList值SPARAM)
{
super(contextParam,-1,valuesParam);
this.context=contextParam;
this.values=valuesParam;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图)
{
视图行视图=转换视图;
持票人持票人;
if(rowView==null)
{
LayoutInflater LayoutInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
rowView=LayoutFlater.充气(R.layout.item\u列表\u item\u视图,空);
viewHolder=新的viewHolder();
viewHolder.imageViewItemImg=(ImageView)rowView.findViewById(R.id.item\u list\u view\u item\u image);
rowView.setTag(viewHolder);
}
否则{
viewHolder=(viewHolder)rowView.getTag();
}
setId(values.get(position.getId());
if(values.get(position).getMediumImageUrl()!=null&&values.get(position).getMediumImageUrl().isEmpty()=false)
{
Picasso.with(context).load(values.get(0.getMediumImageUrl()).into(viewHolder.imageViewItemImg);
}
返回行视图;
}
}
我的片段与网格视图

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
 .
 .
 .
 listItems = new ArrayList<Item>();
 adapter = new ItemListAdapter(getActivity(),listItems);
 .
 .
 .
 .
 updateItemList();
 return view;
}

public void updateItemList()
{

.
.
.

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, new JSONObject(paramString), new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try{
                        String status = response.getString(getResources().getString(R.string.api_status));
                        if(status.equals(getResources().getString(R.string.api_status_success)))
                        {
                            //can be asked to login again
                            JSONArray items = response.getJSONArray("items");
                            ArrayList<Item> newItems = new ArrayList<Item>();
                            if(items.length()>0)
                            {
                                for(int i=0;i<items.length();i++)
                                {
                                    Item item = new Item();
                                    item.setMediumImageUrl(items.getString(i));
                                    newItems.add(item);
                                }
                            }

                            if(newItems.size()>0)
                            {
                                listItems.addAll(newItems);
                                adapter.notifyDataSetChanged();
                            }
                        }
                        else{
                            showMessageDialog("Server error encountered");
                        }
                    }
                    catch (JSONException e)
                    {
                        showMessageDialog("An error encountered");
                    }
                    page++;
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    showMessageDialog(error.getMessage());
                }
            });
            VolleySingleton.getInstance(getActivity()).addToRequestQueue(request);

.
.
.
}
创建视图时的公共视图(布局、充气机、视图组容器、捆绑包保存状态){ . . . listItems=new ArrayList(); adapter=newitemlistadapter(getActivity(),listItems); . . . . updateItemList(); 返回视图; } public void updateItemList() { . . . JsonObjectRequest=新的JsonObjectRequest(request.Method.GET、url、新的JSONObject(paramString)、新的Response.Listener(){ @凌驾 公共void onResponse(JSONObject响应){ 试一试{ 字符串状态=response.getString(getResources().getString(R.String.api_status)); if(status.equals(getResources().getString(R.string.api_status_success))) { //可以要求重新登录 JSONArray items=response.getJSONArray(“items”); ArrayList newItems=新的ArrayList(); 如果(items.length()>0) { 对于(int i=0;i0) { listItems.addAll(newItems); adapter.notifyDataSetChanged(); } } 否则{ showMessageDialog(“遇到服务器错误”); } } 捕获(JSONException e) { showMessageDialog(“遇到错误”); } page++; } },new Response.ErrorListener(){ @凌驾 公共无效onErrorResponse(截击错误){ showMessageDialog(error.getMessage()); } }); getInstance(getActivity()).addToRequestQueue(请求); . . . } 片段的布局文件

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:text="Item List"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <GridView
        android:id="@+id/gv_item_list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></GridView> </LinearLayout>

这是网格视图的行或项布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/item_list_view_item_image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>


为什么getView函数永远不会运行并且不会返回任何内容?

这行永远不会被调用,这就是为什么,所以请修复它

if(newItems.size()>0) {
    listItems.addAll(newItems);
    adapter.notifyDataSetChanged();
}

我的意思是,这个条件永远不会满足。实际上,调试它。

这一行永远不会被调用,这就是为什么,所以请修复它

if(newItems.size()>0) {
    listItems.addAll(newItems);
    adapter.notifyDataSetChanged();
}
adapter = new ItemListAdapter(getActivity(),listItems); 
我的意思是,这个条件从来没有满足过。实际上,调试它

adapter = new ItemListAdapter(getActivity(),listItems); 
您正在Oncreateview中执行此操作,其中listitems为null

if(newItems.size()>0){ 
  listItems.addAll(newItems); 
  adapter = new ItemListAdapter(getActivity(),listItems); 
  griview.setAdapter(adapter); 
}
您正在Oncreateview中执行此操作,其中listitems为null

if(newItems.size()>0){ 
  listItems.addAll(newItems); 
  adapter = new ItemListAdapter(getActivity(),listItems); 
  griview.setAdapter(adapter); 
}

这是您的完整适配器代码。现在是。因为我正在首先测试它。
@Override public int getCount(){return values.size();}
尝试将此添加到您的适配器。不,它不工作。甚至getView也没有运行。
@Override public int getCount(){return values.size();}@Override public Object getItem(int position){return position;}@Override public long getItemId(int position){return position;}
尝试将此添加到适配器。这是您的完整适配器代码吗。现在是。因为我正在首先测试它。
@Override public int getCount(){return values.size();}
尝试将其添加到适配器。不,它不起作用。甚至getView也没有运行。
@Override public int getCount(){return values.size();}@Override public Object getItem(int position){return position;}@Override public long getItemId(int position){return position;}
尝试将其添加到适配器。当截击请求成功时,我将更新它。当截击请求成功时,我将更新它。