美文网首页
android ------ 控件Gridview实现多个men

android ------ 控件Gridview实现多个men

作者: 切切歆语 | 来源:发表于2019-11-02 18:54 被阅读0次

此案例主要讲的是Android控件Gridview(九宫格)完美实现仿支付宝首页,包含添加和删除功能;Fragment底部按钮切换的效果,包含四个模块,登录页面圆形头像等,一个小项目的初始布局。

效果图

自定义GridView

<menu.menudemo.ui.view.ZQScrollGridView
    android:id="@+id/home_gridview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#E4E4E4"
    android:cacheColorHint="#00000000"
    android:fadingEdge="none"
    android:horizontalSpacing="1dp"
    android:listSelector="#00000000"
    android:numColumns="3"
    android:scrollbars="none"
    android:verticalSpacing="1dp"
    ></menu.menudemo.ui.view.ZQScrollGridView>

首页代码

/**
 * 首页
 */
public class HomeFragment extends Fragment implements  View.OnClickListener {

    private View view;
    private TextView tv_sign;
    private Intent intent;
    private ZQScrollGridView gridView;

    private static HomeAdapter adapter;
    public static List<Integer> listPosition;
    public static List<UserBean> list;
    private static ACache aCache;

    private Context context;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_home, container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
        view = getView();
        aCache = ACache.get(getActivity());
        context = getActivity();
        initView();
    }

    public void initView() {
        tv_sign = (TextView) view.findViewById(R.id.home_sign);
        tv_sign.setOnClickListener(this);
        gridView = (ZQScrollGridView) view.findViewById(R.id.home_gridview);
        onLoad();
    }


    public void onLoad() {
        adapter = new HomeAdapter(getActivity());
        gridView.setAdapter(adapter);
        gridView.setOnItemClickListener(onItemClickListener);
        gridView.setOnItemLongClickListener(onItemLongClickListener);
        showData();
    }

    /*****
     * 刷新数据
     */
    private void notifyData() {
        adapter.notifyDataSetChanged();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {

        }
    }

    public Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == 1) {
                showLongClick(false);
            } else if (msg.what == 2)//删除
            {
                showDelete();
            }
        }
    };


    AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (position == (listPosition.size() - 1)) {
                intent = new Intent(getActivity(), SearchActivity.class);
                intent.putExtra("list", (Serializable) listPosition);
                startActivityForResult(intent, 1);
            }
            else {

            }

        }
    };
    AdapterView.OnItemLongClickListener onItemLongClickListener = new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {

            if (position == (listPosition.size() - 1)) {
                return false;
            }
            showLongClick(true);
            Message msg = new Message();
            msg.what = 1;// 删除
            msg.obj = 1;
            LoginFragmentActivity.handler.sendMessage(msg);
            return false;
        }
    };



    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) {
            if (resultCode == 1) {
                if (data.getStringExtra("key").equals("2")) {
                    listPosition.clear();
                    listPosition = HomeData.POSITION(aCache);
                    notifyData();
                }
            }
        }
    }

    private void showData() {
        listPosition = HomeData.POSITION(aCache);
        list = new ArrayList<UserBean>();
        for (int i = 0; i < 34; i++) {
            UserBean user = new UserBean(HomeData.IMG[i], HomeData.TITLE[i], false, false);
            list.add(user);
        }
        notifyData();
    }

    /***
     * 删除
     */
    private void showDelete() {
        //删除缓存
        String home = "";
        for (int i = 0; i < listPosition.size() - 1; i++) {
            UserBean userBean = list.get(listPosition.get(i));
            if (!userBean.isCheck()) {
                home += listPosition.get(i) + ",";
            }
        }
        aCache.remove("home");
        listPosition.clear();
        try {
            UtilFileDB.ADDFile(aCache, "home", home.substring(0, (home.length() - 1)));
            if (listPosition == null || listPosition.size() <= 1) {
                listPosition = HomeData.POSITION(aCache);
            }
        } catch (Exception e) {
            listPosition.add((list.size()-1));//只留加号
        }
        showLongClick(false);
    }

    /****
     * 重新刷新数据
     *
     * @param isvisibility
     */
    private void showLongClick(boolean isvisibility) {
        list.clear();
        for (int i = 0; i < 34; i++) {
            UserBean user = new UserBean(HomeData.IMG[i], HomeData.TITLE[i], false, isvisibility);
            list.add(user);
        }
        HomeFragment.list.get(33).setIsvisibility(false);
        notifyData();
    }
}

由于代码太多未完全给出,源码直接下载即可(点击下载)

源码点击下载: https://github.com/DickyQie/android-small-project

相关文章

网友评论

      本文标题:android ------ 控件Gridview实现多个men

      本文链接:https://www.haomeiwen.com/subject/lnqhbctx.html