【自定义控件】 ------- GridView

    <cn.com.karl.view.MyGridView
        android:id="@+id/bookShelf"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@id/head"
        android:cacheColorHint="#00000000"
        android:columnWidth="90.0dip"
        android:fadingEdge="none"
        android:horizontalSpacing="5dp"
        android:listSelector="#00000000"
        android:numColumns="3"
        android:scrollbars="none"
        android:verticalSpacing="20dp" />

 

public class MyGridView extends GridView {

    private Bitmap background;

    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
        background = BitmapFactory.decodeResource(getResources(),
                R.drawable.bookshelf_layer_center);
    }

    @Override
    protected void dispatchDraw(Canvas canvas) {
        int count = getChildCount();
        int top = count > 0 ? getChildAt(0).getTop() : 0;
        int backgroundWidth = background.getWidth();
        int backgroundHeight = background.getHeight() + 2;
        int width = getWidth();
        int height = getHeight();

        for (int y = top; y < height; y += backgroundHeight) {
            for (int x = 0; x < width; x += backgroundWidth) {
                canvas.drawBitmap(background, x, y, null);
            }
        }
        super.dispatchDraw(canvas);
    }

}

 

public class CopyOfBookShelfActivity extends BaseActivity {
    private GridView bookShelf;
    private int[] data = { R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt, R.drawable.cover_txt,
            R.drawable.cover_txt, R.drawable.cover_txt

    };
    private String[] name = { "天龙八部", "搜神记", "水浒传", "黑道悲情" };
    private GridView gv;
    private Button iv;
    private List<ResolveInfo> apps;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);

        bookShelf = (GridView) findViewById(R.id.bookShelf);
        ShlefAdapter adapter = new ShlefAdapter();
        bookShelf.setAdapter(adapter);
        bookShelf.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                    long arg3) {
                if (arg2 >= data.length) {

                } else {
                    Toast.makeText(getApplicationContext(), "" + arg2,
                            Toast.LENGTH_SHORT).show();
                }
            }
        });
        loadApps();
        gv = (GridView) findViewById(R.id.allApps);
        iv = (Button) findViewById(R.id.imageViewIcon);
        gv.setAdapter(new GridAdapter());
    }

    class ShlefAdapter extends BaseAdapter {
        @Override
        public int getCount() {
            return data.length + 5;
        }
        @Override
        public Object getItem(int arg0) {
            return arg0;
        }
        @Override
        public long getItemId(int arg0) {
            return arg0;
        }
        @Override
        public View getView(int position, View contentView, ViewGroup arg2) {
            contentView = LayoutInflater.from(getApplicationContext()).inflate(
                    R.layout.item1, null);
            TextView view = (TextView) contentView
                    .findViewById(R.id.imageView1);
            if (data.length > position) {
                if (position < name.length) {
                    view.setText(name[position]);
                }
                view.setBackgroundResource(data[position]);
            } else {
                view.setBackgroundResource(data[0]);
                view.setClickable(false);
                view.setVisibility(View.INVISIBLE);
            }
            return contentView;
        }

    }

    private void loadApps() {
        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        apps = getPackageManager().queryIntentActivities(intent, 0);
    }

    public class GridAdapter extends BaseAdapter {
        public GridAdapter() {
        }

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

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

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

        public View getView(int position, View convertView, ViewGroup parent) {

            ImageView imageView = null;
            if (convertView == null) {
                imageView = new ImageView(CopyOfBookShelfActivity.this);
                imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                imageView.setLayoutParams(new GridView.LayoutParams(50, 50));
            } else {
                imageView = (ImageView) convertView;
            }
            ResolveInfo ri = apps.get(position);
            imageView.setImageDrawable(ri.activityInfo
                    .loadIcon(getPackageManager()));
            return imageView;
        }
    }

}

 

完整代码下载地址:http://download.csdn.net/detail/androidsj/5336085

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/androidsj/archive/2013/05/06/3062774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET GridView 控件可以通过绑定数据源来自动生成列,但如果需要自定义列的样式、行为或内容,可以使用自定义列的方式来实现。 以下是一些常见的自定义列方式: 1. TemplateField:通过在GridView 中添加 TemplateField 列,可以在列中添加自定义的 HTML 或控件。例如,可以在列中添加 LinkButton 或 Image 控件,以实现可点击的链接或图像。 2. BoundField:通过在 GridView 中添加 BoundField 列,可以设置列的数据绑定方式和格式化方式。例如,可以设置日期列的显示格式。 3. CommandField:通过在 GridView 中添加 CommandField 列,可以添加自定义的命令按钮,例如“编辑”、“删除”等。 4. HyperLinkField:通过在 GridView 中添加 HyperLinkField 列,可以实现类似于 TemplateField 的效果,但是只能添加超链接。 以下是一个示例,展示如何使用 TemplateField 和 BoundField 实现自定义列: ```asp <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:TemplateField HeaderText="Customer Name"> <ItemTemplate> <asp:Label ID="lblCustomerName" runat="server" Text='<%# Eval("CustomerName") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:BoundField DataField="OrderDate" HeaderText="Order Date" DataFormatString="{0:d}" /> <asp:TemplateField HeaderText="Order Total"> <ItemTemplate> <asp:Label ID="lblOrderTotal" runat="server" Text='<%# Eval("OrderTotal", "{0:c}") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> ``` 在上面的示例中,我们添加了三个列:一个使用 TemplateField 显示客户名称,一个使用 BoundField 显示订单日期,一个再次使用 TemplateField 显示订单总额。我们还使用 Eval 函数绑定了数据源中的字段。 注意,当使用自定义列时,需要设置 GridView 的 AutoGenerateColumns 属性为 False,否则 GridView 会自动创建列并覆盖我们添加的自定义列。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值