java - 尽管设置了属性,但 Fragment GridView 第一项并未显示

标签 java android xml android-adapter android-gridview

在 ScrollView 中创建 GridView 后, View 本身显示正常,但第一个值根本不出现。我尝试过查看类似的问题,但我仍然不明白出了什么问题。为了解决这个问题需要改变什么?

xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <TextView
        android:id="@+id/History_textView0"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:text="Years"
        style="@android:style/TextAppearance.Medium" />
    <com.ages.events.GridViewHistory
        android:id="@+id/History_GridView0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:clickable="false"
        android:columnWidth="100dp"
        android:numColumns="auto_fit"
        android:layout_marginBottom="20dp"
        android:stretchMode="columnWidth"
        android:layout_below="@+id/History_textView0"/>

    <TextView
        android:id="@+id/History_textView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:text="Events"
        style="@android:style/TextAppearance.Medium"
        android:layout_below="@+id/History_GridView0" />
</RelativeLayout>

java

public class TabFragmentHistory extends android.support.v4.app.Fragment {

    static final String[] years = new String[]{
        "1863", "1864",  "1868", "1871", "1890", "1898", "1900", "1906", "1968", "1979"        
    };

    GridView mGridView0;
    public MyAdapter adapter;

    public TabFragmentHistory() {
        // Required empty constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.tab_fragment_history, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        View v = getView();
        assert v != null;

        mGridView0 = (GridView) v.findViewById(R.id.HistoryGridView0);
        adapter = new MyAdapter(getActivity().getApplicationContext(), 0);
        mGridView0.setAdapter(adapter);
        for (int i = 1; i < years.length; i++) {
            adapter.addAdapterItem(new AdapterItem(years[i]));
        }

        super.onActivityCreated(savedInstanceState);
    }

    public class MyAdapter extends ArrayAdapter< AdapterItem > {
        private List< AdapterItem > items = new ArrayList< AdapterItem >();

        // private static LayoutInflater inflater = null;
        public MyAdapter(Context context, int textviewid) {
            super(context, textviewid);
        }

        public void addAdapterItem(AdapterItem item) {
            items.add(item);
        }

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

        @Override
        public AdapterItem getItem(int position) {
            return ((null != items) ? items.get(position) : null);
        }

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

        @SuppressWarnings("deprecation")
        @Override
        public View getView(final int position, View convertView,
                            final ViewGroup parent) {
            View rowView;
            if (convertView == null) {
                rowView = getActivity().getLayoutInflater().inflate(R.layout.gridview_item, parent, false);
            } else {
                rowView = convertView;
            }
            TextView tv = (TextView) rowView.findViewById(R.id.item_gridview);
            tv.setText(items.get(position).first);

            return rowView;
        }
    }

    public class AdapterItem {
        public String first;

        // add more items
        public AdapterItem(String first) {
            this.first = first;

        }
    }
}

最佳答案

for (int i = 1; i < years.length; i++) {
    adapter.addAdapterItem(new AdapterItem(years[i]));
}

这应该从 i = 0 开始吗​​?

关于java - 尽管设置了属性,但 Fragment GridView 第一项并未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39499032/

相关文章:

java - 本地tomcat中的GWT应用: nocache. js 404未找到

java - 开始时的其他 Activity

android - 如何计算在 Android 项目中作为依赖项添加的库的大小

java - Jetty 中的 JSR-356 javax websockets(嵌入式和非嵌入式)

java - 在java中将属性转换为标签

java - 文档监听器不活动 Java

java - 某些输入值的 ArrayIndexOutOfBounds 异常

android - onStop 之后从未调用过的 fragment 的 onDestroyView

android - 我有 edittext 填充问题

xml - 如何解码 Go xml?