пейджер представления Staggered Grid View не устанавливает адаптер должным образом

мой адаптер Staggered Grid View работает правильно в API 19 или выше. но когда я запускаю API 17 или ниже, я вижу, что адаптер настроен неправильно. если я меняю Staggered Grid View на Grid View, он работает нормально, и это показывает, что мой класс adpter работает хорошо. но я не знаю, в чем моя проблема. изображения не установлены в представлении в шахматном порядке. может быть, это связано с моим пейджером просмотра, это мой XML-представление вкладки с просмотром пейджера:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ir.hisis.cloth.SlidingTabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:elevation="2dp"
        android:background="@color/ColorPrimary"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:layout_weight="1">
    </android.support.v4.view.ViewPager>

</LinearLayout>

это мой XML-представление в шахматном порядке:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.etsy.android.grid.StaggeredGridView
        android:id="@+id/grid_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:item_margin="8dp"
        app:column_count="1" />
</FrameLayout>

это моя основная деятельность:

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setTitle("");

        // Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
        adapter =  new TabsPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);

        // Assigning ViewPager View and setting the adapter
        pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(adapter);

        // Assiging the Sliding Tab Layout View
        tabs = (SlidingTabLayout) findViewById(R.id.tabs);
        tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width

        // Setting Custom Color for the Scroll bar indicator of the Tab View
        tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
            @Override
            public int getIndicatorColor(int position) {
                return getResources().getColor(R.color.tabsScrollColor);
            }
        });

адаптер вкладки:

public class TabsPagerAdapter extends FragmentStatePagerAdapter {

    CharSequence Titles[];
    int NumbOfTabs;

    public TabsPagerAdapter(FragmentManager fm,CharSequence mTitles[], int mNumbOfTabsumb) {
        super(fm);

        this.Titles = mTitles;
        this.NumbOfTabs = mNumbOfTabsumb;

    }
    @Override
    public Fragment getItem(int position) {

        if(position == 0)
        {
            return new MainFragment();
        }
        else if(position == 1)
        {
            return new MainFragment();
        }
        else
        {
            return new MainFragment();
        }

    }


    @Override
    public CharSequence getPageTitle(int position) {
        return Titles[position];
    }


    @Override
    public int getCount() {
        return NumbOfTabs;
    }
}

и основной фрагмент:

    public  class MainFragment extends Fragment {

        public MainFragment() {

        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {

            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            return rootView;
        }


        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            ImageAdapter adapt;
            StaggeredGridView gridView = (StaggeredGridView) getView().findViewById(R.id.grid_view);
            adapt= new ImageAdapter(getActivity());
            gridView.setAdapter(adapt);
        }
image adpter:
public class ImageAdapter extends BaseAdapter {
    private Context mContext;
    public String TAG = "base adapter";
    Activity activity;
    public ImageAdapter(Activity a) {
        activity = a;
        mContext = activity.getApplicationContext();
    }

    public int getCount() {
        return mThumbIds.length;
    }

    public Object getItem(int position) {
        return null;
    }

    public long getItemId(int position) {
        return 0;
    }

    // create a new ImageView for each item referenced by the Adapter
    public View getView(int position, View convertView, ViewGroup parent) {
        View imageItem;
        Log.e("item","");
        if (convertView == null) {
            LayoutInflater inflater = activity.getLayoutInflater();
            imageItem = inflater.inflate(R.layout.image_item, null);

            ImageItemViewHolder tag = new ImageItemViewHolder();
            tag.image = (ImageView) imageItem.findViewById(R.id.image);
            tag.tagsContainer = (LinearLayout) imageItem.findViewById(R.id.tags_container);
            tag.likeImage = (ImageView) imageItem.findViewById(R.id.like_image);
            setShareLongClickListenerForImage(tag.image);
            imageItem.setTag(tag);
        } else {
            imageItem =  convertView;
        }

        ImageItemViewHolder tag = (ImageItemViewHolder) imageItem.getTag();
        ImageView img = tag.image;
        img.setImageResource(mThumbIds[position]);

        return imageItem;
    }

    private void setShareLongClickListenerForImage(ImageView image){
        image.setOnLongClickListener(new View.OnLongClickListener() {

            @Override
            public boolean onLongClick(View arg0) {
                try{
                    Log.wtf(TAG, "starting to share image");
                    Utils.shareImage((ImageView) arg0, activity);
                }
                catch(FileNotFoundException e){
                    Toast.makeText(arg0.getContext(), activity.getString(R.string.external_storage_is_uavailable), Toast.LENGTH_LONG).show();
                }catch (IOException e) {
                    Toast.makeText(arg0.getContext(), activity.getString(R.string.proble_with_external_storage), Toast.LENGTH_LONG).show();
                }

                return true;
            }
        });
    }


    // references to our images
    private Integer[] mThumbIds = {
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7,
            R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3,
            R.drawable.sample_4, R.drawable.sample_5,
            R.drawable.sample_6, R.drawable.sample_7
    };

    public static class ImageItemViewHolder{
        public ImageView image;
        public LinearLayout tagsContainer;
        public ImageView likeImage;
    }

person mike fayya    schedule 01.06.2015    source источник


Ответы (2)


Измените значение minSdkVersion в манифесте проекта библиотеки на 9

<uses-sdk android:minSdkVersion="10"/>

с

<uses-sdk android:minSdkVersion="9"/>
person Community    schedule 01.06.2015
comment
я менял но ничего не происходит. - person mike fayya; 01.06.2015
comment
вы используете библиотеку? - person ; 01.06.2015
comment
у меня нет никакой ошибки. просто адаптер не звонит и изображения не устанавливаются. я использую compile 'com.etsy.android.grid:library:1.0.5' - person mike fayya; 01.06.2015
comment
Вы можете клонировать проект git и добавить проект локальной библиотеки в свое приложение. Поскольку это будет проект локальной библиотеки, вы можете увидеть манифест на github.com/etsy/AndroidStaggeredGrid/blob/master/library/src/…. Я не знаю, можем ли мы изменить значение minsdk из тега зависимости. Что ищу, если найду, сообщу. - person ; 01.06.2015

Вы можете клонировать проект git и добавить проект локальной библиотеки в свое приложение. Поскольку это будет проект локальной библиотеки, вы можете увидеть манифест по адресу github.com/etsy/AndroidStaggeredGrid/blob/master/library/src/…. Я не знаю если мы можем изменить значение minsdk из тега зависимости. Что ищу, если найду, сообщу.

person Community    schedule 01.06.2015