MainActivity如下:
package cc.wy; import java.util.ArrayList; import android.app.Activity; import android.app.ActionBar.LayoutParams; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.Button; import android.widget.ListPopupWindow; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; /** * Demo描述: * ListPopupWindow使用完整示例(二)——自定义ListPopupWindow * * 参考资料: * 1 http://blog.csdn.net/rambomatrix/article/details/23525379 * 2 http://blog.csdn.net/jsnrwzm/article/details/14408835 * Thank you very much * */ public class MainActivity extends Activity { private Context mContext; private Button mButton; private ArrayList<String> mArrayList; private ListPopupWindow mListPopupWindow; private ListPopupWindowAdapter mListPopupWindowAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ mContext=this; mArrayList=new ArrayList<String>(); mArrayList.add("第一个子项"); mArrayList.add("第二个子项"); mArrayList.add("第三个子项"); mListPopupWindow=new ListPopupWindow(mContext); //自定义Adapter mListPopupWindowAdapter=new ListPopupWindowAdapter(mArrayList, mContext); mListPopupWindow.setAdapter(mListPopupWindowAdapter); //mListPopupWindow.setBackgroundDrawable(mContext.getResources().getDrawable(R.drawable.ic_launcher)); mListPopupWindow.setWidth(200); mListPopupWindow.setHeight(LayoutParams.WRAP_CONTENT); mListPopupWindow.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) { Toast.makeText(mContext, "点击了"+mArrayList.get(position), Toast.LENGTH_SHORT).show(); } }); mButton=(Button) findViewById(R.id.button); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //指定anchor mListPopupWindow.setAnchorView(v); mListPopupWindow.show(); } }); } }
ListPopupWindowAdapter如下:
package cc.wy; import java.util.ArrayList; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; public class ListPopupWindowAdapter extends BaseAdapter { private ArrayList<String> mArrayList; private Context mContext; public ListPopupWindowAdapter(ArrayList<String> list, Context context) { super(); this.mArrayList = list; this.mContext = context; } @Override public int getCount() { if (mArrayList == null) { return 0; } else { return this.mArrayList.size(); } } @Override public Object getItem(int position) { if (mArrayList == null) { return null; } else { return this.mArrayList.get(position); } } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = LayoutInflater.from(mContext).inflate(R.layout.item, null, false); holder.itemTextView = (TextView) convertView.findViewById(R.id.itemTextView); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } if (this.mArrayList != null) { final String itemName = this.mArrayList.get(position); if (holder.itemTextView != null) { holder.itemTextView.setText(itemName); } } return convertView; } private class ViewHolder { TextView itemTextView; } }
main.xml如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="点击弹出自定义ListPopupWindow" /> </RelativeLayout>
item.xml如下:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/itemTextView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </RelativeLayout>