آموزش برنامه نویسی ، اموزش برنامه نویسی اندروید

تبلیغات

دسته‌ها


GridView سفارشی در اندروید با یک مثال سادهReviewed by بردیا on Dec 24Rating: 5.0GridView سفارشی در اندروید با یک مثال سادهیکی از شگفتی های اندروید مدیریت ویجت ها در اندروید است که امروز می خواهیم یکی از پرکاربردتیرین ویجت رو برای شما بررسی کنیم و اون را بایک مثال ساده مطرح کنیم.ما امروز می خواهیم راجع به یک gridviews سفارشی یا customize gridviews . با این آموزش اندروید شما می تواندی هم در activity و هم در webview استفاده کنید

gridview

 

سلام به همه…..

یکی از شگفتی های اندروید مدیریت ویجت ها در اندروید است که امروز می خواهیم یکی از پرکاربردتیرین ویجت رو برای شما بررسی کنیم و اون را بایک مثال ساده مطرح کنیم.ما امروز می خواهیم راجع به یک gridviews سفارشی یا customize gridviews .

با این آموزش اندروید شما می تواندی هم در activity  و هم در webview  استفاده کنید.

بیاید شروع کنیم:

ما برای سفارشی سازی  gridview   باید یک adapter  بسازیم که extends کند به “BaseAdapter”.

خب باید یه کلاس بسازیم که برای این کار هم میتونید تو کلاس اصلی یا همون main یه کلاس ایجاد کنید مثل مثال زیر یا اینکه کلا یکه کلاس جداگانه برای این کار طراحی کنید .خب کد زیر رو باید در main_activity بنویسید

public class MyAdapter extends BaseAdapter {
 
       private Context mContext;
 
       public MyAdapter(Context c) {
           mContext = c;
       }
 
       @Override
       public int getCount() {
           return mThumbIds.length;
       }
 
       @Override
       public Object getItem(int arg0) {
           return mThumbIds[arg0];
       }
 
       @Override
       public long getItemId(int arg0) {
           return arg0;
       }
 
       @Override
       public View getView(int position, View convertView, ViewGroup parent) {
 
           View grid;
 
           if(convertView==null){
               grid = new View(mContext);
               LayoutInflater inflater=getLayoutInflater();
               grid=inflater.inflate(R.layout.mygrid_layout, parent, false);
           }else{
               grid = (View)convertView;
           }
 
           ImageView imageView = (ImageView)grid.findViewById(R.id.image);
           imageView.setImageResource(mThumbIds[position]);
 
           return grid;
       }
 
   }

خب حالا باید استیل برنامه رو بررسی کنیم توی استایل ما نیاز داریم که یه ImageView  داشته باشیم که یک عکس رو برای ما نشون بده .برای این کار بهتره که یک xml  جدا تعریف کنیم و کد زیر رو توی اون بنویسیم.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/customshape_header"
    android:orientation="vertical">
    <ImageView
        android:id="@+id/image"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>

حالا میخوام یه پس زمینه برای هر خونه داشته باشم ،یه نکته مهم بخوام بگم اینه که هر شی دیگه ای می تونید بزارید تو xml  بالایی و در هر خانه از gridview جداگانه نمایش داده بشه برای پس زمینه من ترجیه می دم از یک shop استفاده کنم تا از یک عکس برای پشت زمینه هر خانه پس در مسیر  res/drawable  یک xml  از نوع

shape

می سازم با کد زیر

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="5dp" />
    <solid android:color="#660033"/>
    <stroke
        android:width="1dip"
        android:color="#C0C0C0" />
</shape>

حالا باید کل کد زیر را در کلاس اصلی بنویسید

package com.coderzheaven.pack;
 
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
 
public class CustomGridViewExample extends Activity {
 
    private Integer[] mThumbIds = {
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            R.drawable.android_2,
            };
 
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        GridView gridview = (GridView) findViewById(R.id.gridview);
        gridview.setAdapter(new MyAdapter(this));
        gridview.setNumColumns(4);
    }
 
  public class MyAdapter extends BaseAdapter {
 
        private Context mContext;
 
        public MyAdapter(Context c) {
            mContext = c;
        }
 
        @Override
        public int getCount() {
            return mThumbIds.length;
        }
 
        @Override
        public Object getItem(int arg0) {
            return mThumbIds[arg0];
        }
 
        @Override
        public long getItemId(int arg0) {
            return arg0;
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
 
            View grid;
 
            if(convertView==null){
                grid = new View(mContext);
                LayoutInflater inflater=getLayoutInflater();
                grid=inflater.inflate(R.layout.mygrid_layout, parent, false);
            }else{
                grid = (View)convertView;
            }
 
            ImageView imageView = (ImageView)grid.findViewById(R.id.image);
            imageView.setImageResource(mThumbIds[position]);
 
            return grid;
        }
    }
}

خب تغریبا دیگه کار داره تموم میشه،فقط کافیه در xml اصلی مربوط به برنامه کد های زیر رو بنویسید

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    android:padding="10dp"
    android:gravity="center"
    android:textStyle="bold"
    />
 
<GridView
    android:id="@+id/gridview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
    android:scrollbars="none" />
</LinearLayout>

خب دیگه کار تمومه ،شاهکار شد،حالا ازش خروجی بگیرید….

یه نمونه از خروجی من برای شما گذاشته ام

باید برنامه شما به صورت زیر بشه

طراحی یک GridView در اندروید

طراحی یک GridView در اندروید

مشخصات

دانـــــلود

  • 242

برچسب ها

, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

مطالب پیشنهادی ما

دیدگاه های شما

2 پاسخ به “GridView سفارشی در اندروید با یک مثال ساده”

  1. omid گفت:

    سلام
    امیدوارم واقعا این نظرم رو بخونید و بهش عمل کنید و اگه پایبند اصولی هستید نشر بدید
    شما نوشتید که از سال ۷۹ هست که دارید کد نویسی میکنید و همین طور استاد دانشگاه هستید بنابراین من که به عنوان کاربر و بازدیدکننده به سایت شما مراجعه میکنم با خودم میگم با یک ادم حرفه ای طرف هستم ولی متاسفانه متوجه چندید مشکل شدم و به صورت نقد بیان میکنم
    ۱- صفحه سایت تون برای پرینت زدن بهینه نشده (خودتون CTRL + P رو بزنید تا متوجه بشید)
    ۲- در برخی از مطالب اسم از نرم افزاری اوردید ولی لینکی جهت دانلود اون نرم افزار قرار ندادید
    ۳-در همین صفحه اگر کد مال خودتون بوده و تست شده بود باید کد و پروژه رو پیوست میکردید که نکردید
    ۴- برخی اموزش هاتون منبع ندارند
    از اون جایی که هر انتقادی باید سازنده باشه پس من هم چند راه حل در اختیار تون میزارم
    برای مورد اول کدهای استایل صفحه سی اس اس (css) رو بهینه و باز بینی کنید تا مشکل بهینه کردن صفحه جهت پرینت حل شود
    برای مورد دوم که مشخصا لطفا لینک رو هم قرار دهید
    مورد سوم و چهارم چون تقریبا شبیه هم هست رو با هم مطرح میکنم مشخصا باید سورس به صفحه اضافه شود و اگر مطلب کپی هست باید لینک منبع ان ذکر شود

    درنهایت از زحمات شما متشکرم و دربازدید بعدیم میام تا بازخوردتون نسبت به نظرم رو مشاهده کنم

    • حامد الوندی گفت:

      با سلام ،قالب جدید سایت چند ماهی هست در دست طراحی می باشد ،و به زودی مشکلاتی که فرمودید حل خواهد شد.
      در مورد پست ها هم حتما دقت نظر بیشتری اعمال خواهد شد

      با تشکر از انتقاد شما دوست عزیز

پاسخ دهید

فرادرس، بزرگ ترین دانشگاه آنلاین ایران
آموزش مبانی برنامه نویسی
آموزش جاوا
آموزش سی شارپ
آموزش شی گرایی در سی شارپ
آموزش ویژوال بیسیک دات نت
آموزش PHP
آموزش پایتون
آموزش برنامه نویسی C
آموزش برنامه نویسی C++
آموزش برنامه نویسی اندروید
آموزش وردپرس
آموزش برنامه نویسی