GridView در اندروید استودیو

منتشرشده توسط حامد قنبری در تاریخ

ListView و GridView زیرمجموعه های AdapterView هستند و می توان آنها را با اتصال به یک آداپتور،  اطلاعات را از یک منبع خارجی بازیابی کرده و در قالب نمایه ای از GridView انها را نشان داد .در آندروید، GridView به شما اجازه مرتب سازی قطعات در یک شبکه پیمایش دو بعدی را می دهد. بعبارت دیگر از
GridView  می توان برای نمایش داده ها در دو بعد متفاوت استفاده نمود. در این آموزش ما به شما نشان خواهیم داد که چگونه می توانید یک GridView سفارشی را در آندروید با تصاویر و متن دلخواه اجرا کنید.

در این آموزش، ما به شما 2 مثال رایج GridView را نشان خواهیم داد:

1-  روش متداول، فقط نمایش متن در GridView .
2- ساختن  یک آداپتور سفارشی برای نمایش تصویر و متن در  GridView .

 

1- مثال اول

نمایش کاراکترهای مشخصی از نام ها در GridView .

اگر در داخل برنامه اکلیپس یا اندروید استودیو قرار دارید پروژه جدیدی را  ایجاد کنید

اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

اما اگر هنوز برنامه خود را باز نکرده اید یکی از برنامه های فوق را باز نموده و بعد از تعیین مشخصات(نامگذاری) ، تعیین حداقل sdk  و نوع اکتیویتی (blank  یا Empty) ، نام اکتیویتی ابتدایی و اصلی خود  را همان MainActivity قرار دهید. بعد از لود کامل برنامه ، در مسیر res ⇒layout لایه متناظر اکتیوتی اصلی یعنی activity_main را پیدا نمود و کدهای مندرج و پیش فرض آن را پاک کرده و کدهای xml  زیر را به آن اضافه کنید:

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mygrid"
    android:numColumns="auto_fit"
    android:gravity="center"
    android:columnWidth="50dp"
    android:stretchMode="columnWidth"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#f5caca"
    style="@style/Base.TextAppearance.AppCompat.Body2"
    android:textFilterEnabled="@bool/abc_config_allowActionMenuItemTextWithIcon">
</GridView>

حال نوبت نوشتن کدهای اصلی کلاس MainActivity می شود، که کدهای آن به شرح زیر می باشد:

 
import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity {

    GridView gridView;

    static final String[] numbers = new String[] {
            "Ali", "Behzad", "hamed", "davood", "reza",
            "Farokh", "gasem", "Habib", "Iraj", "Javad",
            "Kievan", "Lilla", "Mohammad", "Nader", "Omid",
            "Poua", "touraj", "Ramin", "Selma", "saeid"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        gridView = (GridView) findViewById(R.id.mygrid);


        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, numbers);

        gridView.setAdapter(adapter);

        gridView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {
                Toast.makeText(getApplicationContext(),
                        ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
            }
        });

    }

}

توضیحات :

ابتدا در لایوت اصلی یعنی Activity_main  یک GridView با مشخصاتی که در فوق ارائه شده ایجاد کردیم و id  آن برابر mygrid  قرار داده ایم.

 

android:id="@+id/mygrid"

سپس در کلاس اصلی یعنی کلاس MainActivity بعد از تعریف یک متغیر کلی برای GridView  به منظور دسترسی کامل در کلاس ، متغیری را با نام number و ازنوع String بصورت آرایه برای کلاس تعریف کرده ایم که متشکل از چندین نام می باشد:

GridView gridView;
static final String[] numbers = new String[] { "Ali", "Behzad", "hamed", "davood", 
"reza", "Farokh", "gasem", "Habib", "Iraj", "Javad", "Kievan", "Lilla", "Mohammad", 
"Nader", "Omid", "Poua", "touraj", "Ramin", "Selma", "saeid"};

در قسمت onCreate  اکتیویتی مورد نظر را برای کلاس مشخص کرده ایم:

 

@Override
 public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main);

 

سپس GridView موجود در لایوت را بر اساس id  برای کلاس تعریف و فراخوانی کرده ایم:

gridView = (GridView) findViewById(R.id.mygrid);

 

سپس با فراخوانی کلاس آداپتور آرایه ای ، آرایه مورد نظر خود را که شامل چندین نام متنوع است  در سند طرح بندی شده XML  که بخشی از سیستم عامل Android است (و نه یک سند طرح بندی شده XML توسط خود برنامه نویس) تعریف نموده ایم و در نهایت  آن را با GridBiew  مورد نظر set  کرده ایم.

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1, numbers);

        gridView.setAdapter(adapter);

 

سپس با فراخوانی متد setOnItemClickListener   براساس position  مورد نظر هریک از قطعات در GridView ، از برنامه خواستیم که در صورت کلیک بر روی هریک از قطعات ، متن مورد نظر همان قطعه را بصورت  Toast برای کاربر نشان دهد.

gridView.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v,
                                    int position, long id) {
                Toast.makeText(getApplicationContext(),
                        ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
            }

حال پروژه را اجرا کرده و از آن در آموزش هر چه بیشتر خود استفاده کنید. اگر مشکلی در اجرای کدها وجود دارد یا سوال مشخصی از نویسنده سایت دارید سوالات خود را در قسمت دیدگاه ها بیان کنید.


0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --