Пользовательский ViewPager - PullRequest
3 голосов
/ 25 июля 2011

Как я могу создать настроенный ViewPager? Для создания экземпляра страницы в ViewPager это выглядит примерно так:

            public Object instantiateItem(View collection, int position) {
                    TextView tv = new TextView(cxt);
                    tv.setText("Bonjour PAUG " + position);
                    tv.setTextColor(Color.WHITE);
                    tv.setTextSize(30);

                    ((ViewPager) collection).addView(tv,0);

                    return tv;
            }

есть ли способ раздувать таким образом в классе, расширенном с помощью адаптера:

public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
    if (v == null) {
        LayoutInflater vi = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        v = vi.inflate(R.layout.the_layout, null);
    }
    CustomView cv = items.get(position);
    if (cv != null) {
            TextView text = (TextView) v.findViewById(R.id.text);
            if (text != null) {
                  ticker.setText(cv.getText()); 
            }

Ответы [ 3 ]

3 голосов
/ 11 августа 2011

Это простой пример, но он работает тихо.

public Object instantiateItem(View collection, int position) {
        LayoutInflater inflater = (LayoutInflater)cxt.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.search_result, null);
        //
        TextView title = (TextView)layout.findViewById(R.id.search_result_title);
        TextView body = (TextView)layout.findViewById(R.id.search_result_body);
        TextView byline = (TextView)layout.findViewById(R.id.search_result_byline);
        TextView day = (TextView)layout.findViewById(R.id.search_result_date_day);
        TextView month = (TextView)layout.findViewById(R.id.search_result_date_month);
        TextView year = (TextView)layout.findViewById(R.id.search_result_date_year);
        //
        title.setText(list_title.get(position).toString());
        body.setText(list_body.get(position).toString());
        day.setText(list_day.get(position).toString());
        month.setText(list_month.get(position).toString());
        year.setText(list_year.get(position).toString());
        byline.setText(list_byline.get(position).toString());
        //
        ((ViewPager) collection).addView(layout,0);
        return layout;
    }
0 голосов
/ 04 мая 2012

Цуназе прав.Кроме того, есть еще один способ сделать это.Если вы используете фрагменты для установки представления пользовательского интерфейса, вы можете использовать getItem (int position) из FragmentPagerAdapter, а затем использовать метод onCreateView из класса Fragment.

    @Override
public Fragment getItem(int position) {
    // TODO Auto-generated method stub

    Log.d(TAG, "getItem");

    return ImageListFragment.newInstance(position, mList);
}
0 голосов
/ 02 августа 2011

Подкласс класса PagerAdapter и переопределение соответствующих методов.

На самом деле, если вы посмотрите на исходный код, вы можете только передать объект PagerAdapter в setAdapter (), так что ответ - нет.

...