繁体   English   中英

Gridview适配器未在片段中显示数据

[英]Gridview adapter not showing data in a fragment

GridviewAdapter.java

public class GridviewAdapter extends BaseAdapter{
    private ArrayList<String> listCountry;
    private ArrayList<String> listFlag;
    private Activity activity;

    public GridviewAdapter(Activity activity, ArrayList<String> listCountry, ArrayList<String> listFlag) {
        super();
        this.listCountry = listCountry;
        this.listFlag = listFlag;
        this.activity = activity;
    }

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

    @Override
    public String getItem(int position) {
        // TODO Auto-generated method stub
        return listCountry.get(position);
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    public static class ViewHolder {
        public ImageView imgViewFlag;
        public TextView txtViewTitle;
    }

    @Override
    public View getView(final int position, View convertView, ViewGroup parent) {
        Toast.makeText(activity, "pppl", Toast.LENGTH_SHORT).show();
        ViewHolder view;
        LayoutInflater inflator = activity.getLayoutInflater();

        if(convertView==null) {
            view = new ViewHolder();
            convertView = inflator.inflate(R.layout.simple_list_view, parent,false);
            view.txtViewTitle = convertView.findViewById(R.id.textView1);
            view.imgViewFlag = convertView.findViewById(R.id.imageView1);
            convertView.setTag(view);
        }
        else {
            view = (ViewHolder) convertView.getTag();
        }
        view.txtViewTitle.setText(listCountry.get(position));
        Picasso.get().load(listFlag.get(position)).resize(100,100).into(view.imgViewFlag);
        return convertView;
    }
}

Fragment.Java是购物名称

public class Shopping extends Fragment {
    GridView gridView;
    GridviewAdapter mAdapter;
    ArrayList<String> listCountry;
    ArrayList<String> listFlag;

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.activity_shopping,null);

        gridView = view.findViewById(R.id.gridView1);
        prepareList();
        return view;
    }
    public void prepareList() {
        listCountry = new ArrayList<String>();
        listFlag = new ArrayList<String>();

        listCountry.add("name");
        listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
        listCountry.add("one");
        listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
        listCountry.add("name");
        listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
        listCountry.add("one");
        listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
        listCountry.add("name");
        listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");
        listCountry.add("one");
        listFlag.add("https://www.freepngimg.com/thumb/cartoon/4-2-cartoon-transparent.png");

        gridView = new GridView(getActivity());
        mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
        gridView.setAdapter(mAdapter);
    }
}

购物片段

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:layout_marginTop="4dp">
    <GridView
        android:layout_height="match_parent"
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:numColumns="3"
        android:horizontalSpacing="10dp"
        android:verticalSpacing="10dp"
        android:alignmentMode="alignMargins"
        android:columnOrderPreserved="false"
        android:layout_weight="8"
        android:padding="14dp">
    </GridView>
</LinearLayout>

我正在使用这些文件并将数据添加到gridview,但未在输出中显示任何内容,因此请检查并提供解决方案。 我尝试了很多方法,但是适配器中没有运行getview。 并且getCount返回值大于0作为数据。

问题出在这里gridView = new GridView(getActivity());

    gridView = new GridView(getActivity());
    mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
    gridView.setAdapter(mAdapter);

您正在创建gridview新对象时,请删除this line ,它开始正常工作

这是您需要在上面替换的代码。

    mAdapter = new GridviewAdapter(getActivity(),listCountry, listFlag);
    gridView.setAdapter(mAdapter);

请向您展示“ GridView”项目的布局。 当项目布局中的“ ImageView”未指定尺寸时,仅使用换行或匹配。 无法计算“ ImageView”的大小,因此可能无法显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM