解决方法
第1步:Main.xml
您可以使用列表视图或任何其他复合列表视图:
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" android:orientation="vertical" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" > </ListView> </LinearLayout>
第2步:listviewchild.xml
<ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginLeft="15dp" android:layout_toRightOf="@+id/textview_name" android:src="@drawable/ic_launcher" />
第3步:
String popUpContents[]; PopupWindow popupWindowDogs; ListView listView1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView1=(ListView)findViewById(R.id.listView1); listView1.setAdapter(new MyAddapter(MainActivity.this)); // binding the list view. /* * initialize pop up window items list */ // add items on the array dynamically // format is Company Name:: ID List<String> dogsList = new ArrayList<String>(); dogsList.add("Samsung"); dogsList.add("Google"); dogsList.add("Yahoo"); dogsList.add("Microsoft"); // convert to simple array popUpContents = new String[dogsList.size()]; dogsList.toArray(popUpContents); /* * initialize pop up window */ popupWindowDogs = popupWindowDogs(); } /* * */ 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 text = getItem(position); // visual settings for the list item TextView listItem = new TextView(MainActivity.this); listItem.setText(text); listItem.setTag(position); listItem.setTextSize(22); listItem.setPadding(10,10,10); listItem.setTextColor(Color.WHITE); return listItem; } }; return adapter; }
}
第4步:
Context rContext; private LayoutInflater rInflater; private Activity activity; public MyAddapter(Context c) { rInflater = LayoutInflater.from(c); rContext = c; } public MyAddapter(Activity imagebinding) { // TODO Auto-generated constructor stub activity = imagebinding; rContext = imagebinding; rInflater = LayoutInflater.from(imagebinding); rContext = imagebinding; rInflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); } @Override public int getCount() { // TODO Auto-generated method stub return 10; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return 0; } @Override public View getView(final int position,ViewGroup parent) { // TODO Auto-generated method stub convertView = rInflater.inflate(R.layout.child,null); final MyDat mydat = new MyDat(); mydat.imageView1=(ImageView)convertView.findViewById(R.id.imageView1); mydat.imageView1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub popupWindowDogs.showAsDropDown(v,-5,0); } }); return convertView; } class MyDat { ImageView imageView1; }
第5步:
@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 Toast.makeText(mContext,"Selected Positon is: " + arg2,100).show(); }