آموزش رویداد کلیک در ListView
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش رویداد کلیک در ListView و ارسال رویداد کلیک به یک اکتیویتی دیگر می پردازیم در ادامه با ما همراه باشید.
Structure پروژه ما به این شکل است که ما دو اکتیویتی داریم در اکتیویتی اول ما یک listview با مقادیری وجود دارد که با کلیک بروی هر کدام از آنها اندیس کلیک شده به اکتیویتی دوم پاس داده می شود.
پس بدون معطلی به سراغ پروژه خودمان میرویم ابتدا در layout اولی خودمان کد زیر را قرار میدهم نام آن برابر با activity_main.xml است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" android:padding="10dp"> <ListView android:id="@+id/listView1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> </RelativeLayout> |
در بالا فقط یک ListView قرار گرفته است.
حالا کد مربوط به اکتیویتی اول ما همانند زیر می شود که نام آن برابر با MainActivity.java است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package ir.programchi; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends AppCompatActivity { ListView listView; String[] listValue = new String[] {"ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView = (ListView)findViewById(R.id.listView1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_2, android.R.id.text1, listValue); listView.setAdapter(adapter); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String TempListViewClickedValue = listValue[position].toString(); Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("ListViewClickedValue", TempListViewClickedValue); startActivity(intent); } }); } } |
ابتدا یک آرایه ایجاد کردیم و سپس مقایری را در آن قرار دادیم این مقادیر همان آیتم های ما هستند.
سپس view مربوط به ListView را پیدا کردیم.
در بالا یک آداپتور داخلی ایجاد کردیم (آداپتور را به تفضیل در پست های قبلی توضیح دادیم) در اینجا ما از آداپتور خود اندروید استفاده کردیم ولی قبلا هم گفتم در صورتی که می خواهید شکل ظاهری بهتری داشته باشد باید آداپتور سفارشی ایجاد کنیم.
سپس برای ListView بالا setOnItemClickListener ایجاد کردیم و اندیس کلیک شده را به دست آورده و به اکتیویتی دوم ما که نام آن SecondActivity است پاس دادیم.
یک layout دیگر ایجاد کرده و نام آن را برابر با activity_second.xml قرار داده و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SecondActivity" android:padding="10dp"> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/editText1" android:gravity="center" android:hint="ListView Clicked Value Show Here" android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> </RelativeLayout> |
مقدار کلیک شده به این آکتیویتی پاس داده می شود در اینجا ما یک EditText قرار داده ایم.
و در آخر هم کد مربوط به اکتیویتی دوم ما که نام آن برابر با SecondActivity.java می باشد همانند زیر می شود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package ir.programchi; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.EditText; public class SecondActivity extends AppCompatActivity { EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); editText = (EditText)findViewById(R.id.editText1); String TempHolder = getIntent().getStringExtra("ListViewClickedValue"); editText.setText(TempHolder); } } |
این آموزش هم به پایان رسید.
موفق و موید باشید.