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 دیدگاه