簡體   English   中英

盡管設置了屬性,但片段GridView的第一項仍未顯示

[英]Fragment GridView first item not being displayed despite setting properties

在滾動視圖中創建gridview后,視圖本身顯示為正常狀態,但第一個值根本沒有出現。 我曾嘗試看過類似的問題,但我仍然不明白出了什么問題。 為了解決此問題需要更改什么?

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>

爪哇

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開始嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM