package com.example.test4popupwindow;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.TextView;
/**
* Class description
*
* @author houshengyong
* @since 2015-6-5
*/
public class MyListAdapter extends BaseAdapter {
String[] mStrings;
LayoutInflater mInflater;
Context mContext;
/**
* @param mListView
* @param mStrings
*/
public MyListAdapter(Context context, String[] strings) {
mStrings = strings;
mContext = context;
mInflater = LayoutInflater.from(context.getApplicationContext());
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getCount()
*/
@Override
public int getCount() {
return mStrings.length;
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItem(int)
*/
@Override
public Object getItem(int position) {
return mStrings[position];
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getItemId(int)
*/
@Override
public long getItemId(int position) {
return position;
}
/*
* (non-Javadoc)
*
* @see android.widget.Adapter#getView(int, android.view.View, android.view.ViewGroup)
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = mInflater.inflate(R.layout.list_activity_item, null);
ViewHolder viewHolder = new ViewHolder();
viewHolder.btn = (Button) convertView.findViewById(R.id.btn);
viewHolder.tv = (TextView) convertView.findViewById(R.id.tv);
viewHolder.itemRoot = convertView;
convertView.setTag(viewHolder);
}
final ViewHolder viewHolder = (ViewHolder) convertView.getTag();
viewHolder.tv.setText(mStrings[position]);
viewHolder.btn.setOnClickListener(new OnClickListener() {
ViewHolder holder = viewHolder;
@Override
public void onClick(View v) {
// Rect r = new Rect();
// mListView.getChildVisibleRect(v, r, null);
// Log.e("test1", "" + r);
// Log.e("test1", "" + r.left);
// Log.e("test1", "" + r.top);
// Log.e("test1", "" + r.right);
// Log.e("test1", "" + r.bottom);
//
// Rect outRect = new Rect();
// v.getHitRect(outRect );
// Log.e("test1", "outRect=" + outRect);
// Log.e("test1", "" + outRect.left);
// Log.e("test1", "" + outRect.top);
// Log.e("test1", "" + outRect.right);
// Log.e("test1", "" + outRect.bottom);
Log.e("test1", "" + holder.itemRoot.getTop());
Log.e("test1", "" + holder.itemRoot.getBottom());
// TODO work around: 通过计算listview item到底部的距离,当距离小于popup
// window的高度是,修改popup的背景图(方向箭头向上),否则展示默认向下的方向箭头图片
PopupHelper.displayPopupWindow(mContext, mInflater, v);
}
});
return convertView;
}
class ViewHolder {
TextView tv;
Button btn;
View itemRoot;
}
}