ViewPager+Activity

这篇博客介绍如何利用ViewPager结合Activity,实现类似QQ好友分组的界面效果。通过示例代码,展示了如何创建和配置XML布局文件,达到ListView分组的视觉体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做出的效果是QQ好友分组+ListView分组







实现代码如下:

有三个XML文件:

<ExpandableListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/res_layout_ExpandableListView"
        ></ExpandableListView>

<ListView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/res_layout_list"
        ></ListView>

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

三个Java文件:
public class activity_ViewPage3 extends AppCompatActivity {

    private ViewPager res_main_viewPager;
    private List<View> list=new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_view_page3);
        res_main_viewPager = (ViewPager) findViewById(R.id.res_main_ViewPager);
        LocalActivityManager lam=new LocalActivityManager(this,true);
        lam.dispatchCreate(savedInstanceState);
        Intent it1=new Intent(this,MainActivty2.class);
        list.add(lam.startActivity("1",it1).getDecorView());
        Intent it2=new Intent(this,MainActivty3.class);
        list.add(lam.startActivity("1",it2).getDecorView());
        res_main_viewPager.setAdapter(new MyAdapter());
    }
    class MyAdapter extends PagerAdapter{

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

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }


        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View view = list.get(position);
            container.addView(view);
            return view;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // super.destroyItem(container, position, object);
            View v= list.get(position);
            container.removeView(v);
        }
    }

public class MainActivty2 extends Activity {

    private ListView res_layout_list;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activty3_mian);
        res_layout_list = (ListView) findViewById(R.id.res_layout_list);
        String[] list= new String[10];
        for (int i = 0; i <list.length ; i++) {
            list[i]="尹"+i+"样";
        }
        my m=new my<String>(this,android.R.layout.simple_list_item_1,list,new String[]{"浩0","浩4","浩7"});
        res_layout_list.setAdapter(m);
    }
    class my<T> extends ArrayAdapter {
        private List<T> object=new ArrayList<>();
        private List<T> pam=new ArrayList<>();
        public my(@NonNull Context context, @LayoutRes int resource,Object[] object,Object[] pam) {
            super(context, resource,object);
            for (int i = 0; i <object.length ; i++) {
                this.object.add((T) object[i]);
            }
            for (int i = 0; i <pam.length ; i++) {
                this.pam.add((T) pam[i]);
            }
        }
        @Override
        public boolean isEnabled(int position) {
            if(pam.contains(object.get(position))){
                return false;
            }
            return super.isEnabled(position);
        }
    }


public class MainActivty3 extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activty4_main);
        ExpandableListView  res_layout_ExpandableListView= (ExpandableListView) findViewById(R.id.res_layout_ExpandableListView);
        List<Map<String,Object>> list=new ArrayList<>();
        List<List<Map<String,Object>>> l=new ArrayList<>();
        for (int i = 0; i <4 ; i++) {
            Map<String,Object> map=new HashMap<>();
            map.put("text","组名:"+i);
            list.add(map);
            List<Map<String,Object>> ll=new ArrayList<>();
            for (int j = 0; j <5 ; j++) {
                Map<String,Object> map2=new HashMap<>();
                map2.put("text2",i+"组第"+j+"个");
                ll.add(map2);
            }
            l.add(ll);
        }
        SimpleExpandableListAdapter sel=new SimpleExpandableListAdapter(this,list,android.R.layout.simple_list_item_1,new String[]{"text"},
                new int[]{android.R.id.text1},l,android.R.layout.simple_list_item_1,new String[]{"text2"},new int[]{android.R.id.text1});
        res_layout_ExpandableListView.setAdapter(sel);
    }








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值