Как остановить рисование элементов GridView ДО того, как родительский вид станет прокручиваемым? - PullRequest
1 голос
/ 05 мая 2011

Я пытаюсь заполнить ViewFlipper GridView, но с возможностью подкачки, а не прокрутки. GridView заполнит одну "страницу" (одну полную страницу без прокрутки) и начнет заполнять следующий просмотр в ViewFlipper следующим битом набора данных.

Мне нужно динамически заполнять страницы, так как размеры экрана будут меняться. Это GridView спортивный класс адаптера с переопределением getView(), поэтому я подумал, что наиболее элегантным решением было бы нарисовать представление как нормальное в GridView, но здесь я столкнулся с некоторой путаницей:

Две вещи:

Как я могу сказать функции getView() записать элементы GridView в следующий View в ViewFlipper? И по этому признаку, как я могу знать, когда экран заполняется незадолго до того, как появляется полоса прокрутки (я не хочу прокручиваемых списков, что было целым смыслом использования ViewFlipper).

Или есть лучшее решение, которое я просто еще не нашел? Я не смог найти пример в демоверсиях API и небольшую информацию здесь о stackoverflow, кроме этого, который заставил меня начать, но мне все еще нужны два вышеупомянутых предложения, чтобы это решение работало (если нет чего-то лучшего): Android ViewFlipper не переворачивается

Адаптер GridView:

// custom adapter made for the GridView
public class ButtonAdapter extends BaseAdapter {
    private Context mContext;
    private List<Map<String, String>> mData;
    private int mLayout;

    public ButtonAdapter(Context c, int layout, List<Map<String, String>> list) {
        this.mContext = c;
        this.mData = list;
        this.mLayout=layout;
    }

    public int getCount() {
        return mData.size();
    }

    public Object getItem(int position) {
        return mData.get(position);
    }

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

    public View getView(int position, View convertView, ViewGroup parent) {
        Button btn = null;

        if(convertView==null) {
            convertView = inflater.inflate(this.mLayout, null);
        }

        btn = (Button)convertView.findViewById(R.id.grid_btn);
        if(btn != null) {
            //btn.setPadding(8,8,8,8);
            btn.setText(mData.get(position).get("label"));
            btn.setId(position);
        }

        return convertView;
    }
}
...