Android 分享机顶盒项目的封装类《GridView》(二)(转)

简介: Android 分享机顶盒项目的封装类《GridView》(二)(转)

该 类的全部源码为:

GridViewExt package com.yaomei.widget;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.yaomei.activity.adapter.AppsAdapter;
import com.yaomei.activity.info.R;
public class gridViewExt extends LinearLayout {
    public List<HashMap<String, Object>> tableRowsList;
    private List<HashMap<String, Object>> app = new ArrayList<HashMap<String, Object>>();
    private AppsAdapter adapter;
    onItemClickListener onItemClickEvent;
    onLongPressExt onLongPress;
    int checkRowID = -1; // 选中行的下标
    int checkColumnID = -1; // 选中列的下标
    int lastRowCount = -1; // 最后一行的总数
    private int ColumnCount; // 每列的总数
    public void setColumnCount(int count) {
        this.ColumnCount = count;
    }
    public int getColumnCount() {
        return ColumnCount;
    }
    public interface onItemClickListener {
        public boolean onItemClick(int position, MotionEvent event, View view);
    }
    public interface onLongPressExt {
        public boolean onLongPress(View view);
    }
    public gridViewExt(Context context) {
        this(context, null);
        // TODO Auto-generated constructor stub
    }
    public gridViewExt(Context context, AttributeSet attrs) {
        super(context, attrs);
        int resouceID = -1;
        TypedArray typedArray = context.obtainStyledAttributes(attrs,
                R.styleable.GridViewExt);
        int N = typedArray.getIndexCount();
        for (int i = 0; i < N; i++) {
            int attr = typedArray.getIndex(i);
            switch (attr) {
            case R.styleable.GridViewExt_ColumnCount:
                resouceID = typedArray.getInt(
                        R.styleable.GridViewExt_ColumnCount, 0);
                setColumnCount(resouceID);
                break;
            }
        }
        typedArray.recycle();
    }
    public void setOnItemClickListener(onItemClickListener click) {
        this.onItemClickEvent = click;
    }
    public void setOnLongPressListener(onLongPressExt longPress) {
        this.onLongPress = longPress;
    }
    public void NotifyDataChange() {
        removeAllViews();
    }
    void bindView() {
        removeAllViews();
        int count = adapter.getCount();
        TableCell[] cell = null;
        int j = 0;
        LinearLayout layout;
        tableRowsList = new ArrayList<HashMap<String, Object>>();
        for (int i = 0; i < count; i++) {
            j++;
            final int position = i;
            if (j > getColumnCount() || i == 0) {
                cell = new TableCell[getColumnCount()];
            }
            final View view = adapter.getView(i, null, null);
            view.setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // TODO Auto-generated method stub
                    unCheckPressed();
                    checkRowID = -1;
                    checkColumnID = -1;
                    if (onItemClickEvent != null) {
                        onItemClickEvent.onItemClick(position, event, view);
                    }
                    return false;
                }
            });
相关文章
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
109 1
|
1月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
93 2
|
1月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
138 0
安卓项目:app注册/登录界面设计
|
11天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
39 6
|
20天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
39 2
|
30天前
|
JSON 调度 数据库
Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点。文章详细解析了Kotlin中的协程、扩展函数、高阶函数、密封类及`inline`和`reified`关键字在Android开发中的应用,帮助读者更好地理解和使用这些特性。
19 1
|
11天前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
17 0
|
1月前
|
前端开发 Java 测试技术
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
android MVP契约类架构模式与MVVM架构模式,哪种架构模式更好?
19 2
|
1月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目