نمایش ListView به صورت آبشاری (dropdown) درAndroid
سه شنبه 5 آبان 1394در این مقاله می خواهیم یاد بگیریم که چگونه می توان با یک دکمه یک ListView آبشاری ایجاد کنیم و با زدن آن ListView باز و بسته شود.
ابتدا داخل فایل xml خود باید قطعه کد زیر را بنویسید به صورت زیر:
<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" > <Button android:id="@+id/buttonShowDropDown" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="نمایش لیست ویو به صورت آبشاری" /> </RelativeLayout>
یک دکمه قرار دادیم که با زدن آن یک لیست ویو به صورت پاپ آپ باز می شود و با زدن آن دکمه دو باره بسته می شود.
حالا کلاس جاوای خود را می نویسیم:
import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView; import android.app.Activity; import android.graphics.Color; public class MainActivity extends Activity { String TAG = "MainActivity.java"; String popUpContents[]; PopupWindow popupWindowDogs; Button buttonShowDropDown; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // initialize pop up window items list // add items on the array dynamically // format is DogName::DogID List<String> dogsList = new ArrayList<String>(); dogsList.add("Akita Inu::1"); dogsList.add("Alaskan Klee Kai::2"); dogsList.add("Papillon::3"); dogsList.add("Tibetan Spaniel::4"); // convert to simple array popUpContents = new String[dogsList.size()]; dogsList.toArray(popUpContents); // initialize pop up window popupWindowDogs = popupWindowDogs(); // button on click listener View.OnClickListener handler = new View.OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.buttonShowDropDown: // show the list view as dropdown popupWindowDogs.showAsDropDown(v, -5, 0); break; } } }; // our button buttonShowDropDown = (Button) findViewById(R.id.buttonShowDropDown); buttonShowDropDown.setOnClickListener(handler); } public PopupWindow popupWindowDogs() { // initialize a pop up window type PopupWindow popupWindow = new PopupWindow(this); // the drop down list is a list view ListView listViewDogs = new ListView(this); // set our adapter and pass our pop up window contents listViewDogs.setAdapter(dogsAdapter(popUpContents)); // set the item click listener listViewDogs.setOnItemClickListener(new DogsDropdownOnItemClickListener()); // some other visual settings popupWindow.setFocusable(true); popupWindow.setWidth(250); popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); // set the list view as pop up window content popupWindow.setContentView(listViewDogs); return popupWindow; } /* * adapter where the list values will be set */ private ArrayAdapter<String> dogsAdapter(String dogsArray[]) { ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dogsArray) { @Override public View getView(int position, View convertView, ViewGroup parent) { // setting the ID and text for every items in the list String item = getItem(position); String[] itemArr = item.split("::"); String text = itemArr[0]; String id = itemArr[1]; // visual settings for the list item TextView listItem = new TextView(MainActivity.this); listItem.setText(text); listItem.setTag(id); listItem.setTextSize(22); listItem.setPadding(10, 10, 10, 10); listItem.setTextColor(Color.WHITE); return listItem; } }; return adapter; } }
داخل متد OnCreate یک لیست از جنس رشته تعریف می کنیم و اطلاعات را به دلخواه اضافه می کنید
دکمه ی مورد نظر را تعریف کردن و برای آن رویداد SetOnClickListner تعریف می کنید، قرار است با زدن دکمه لیست ویو به صورت آبشاری یا DropDown باز و بسته شود
از یک متد به نام Popupwindow استفاده می کنید، و یک لیست ویو که با adapter پر شده است تعریف می نمایید.
حالا کلاس DogsDropdownOnItemClickListener:
import android.content.Context; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.TextView; public class DogsDropdownOnItemClickListener implements OnItemClickListener { String TAG = "DogsDropdownOnItemClickListener.java"; @Override public void onItemClick(AdapterView<?> arg0, View v, int arg2, long arg3) { // get the context and main activity to access variables Context mContext = v.getContext(); MainActivity mainActivity = ((MainActivity) mContext); // add some animation when a list item was clicked Animation fadeInAnimation = AnimationUtils.loadAnimation(v.getContext(), android.R.anim.fade_in); fadeInAnimation.setDuration(10); v.startAnimation(fadeInAnimation); // dismiss the pop up mainActivity.popupWindowDogs.dismiss(); // get the text and set it as the button text String selectedItemText = ((TextView) v).getText().toString(); mainActivity.buttonShowDropDown.setText(selectedItemText); // get the id String selectedItemTag = ((TextView) v).getTag().toString(); Toast.makeText(mContext, "Dog ID is: " + selectedItemTag, Toast.LENGTH_SHORT).show(); } }
کلاس بالا انیمیشن و زمان انمیشن (popup) است، که با انتخاب کردن هر کدام از این بخش های لیست ویو یک id به صورت toast نمایش داده می شود.
- Android
- 2k بازدید
- 3 تشکر