51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> app >> 文章正文

popwindow中的listview怎么实现下拉刷新

更新时间:2013-7-24:  来源:51代码网

popwindow中的listview怎么实现下拉刷新

package com.npt.caronline;
import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;


public class PopMenu {
private ArrayList<String> itemList;
private Context context;
private PopupWindow popupWindow;
private ListView listView;

// private OnItemClickListener listener;

public PopMenu(Context context) {
// TODO Auto-generated constructor stub
this.context = context;

itemList = new ArrayList<String>(5);

View view = LayoutInflater.from(context)
.inflate(R.layout.popmenu, null);

// 设置 listview
listView = (ListView) view.findViewById(R.id.listView);
listView.setAdapter(new PopAdapter());
listView.setFocusableInTouchMode(true);
listView.setFocusable(true);

popupWindow = new PopupWindow(view, 100, LayoutParams.WRAP_CONTENT);
popupWindow = new PopupWindow(view, context.getResources()
.getDimensionPixelSize(R.dimen.popmenu_width),
LayoutParams.WRAP_CONTENT);

// 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景(很神奇的)
popupWindow.setBackgroundDrawable(new BitmapDrawable());
}

// 设置菜单项点击监听器
public void setOnItemClickListener(OnItemClickListener listener) {
// this.listener = listener;
listView.setOnItemClickListener(listener);
}

// 批量添加菜单项
public void addItems(List<String> names) {
for (String s : names)
itemList.add(s);
}

// 单个添加菜单项
public void addItem(String item) {
itemList.add(item);
}

// 下拉式 弹出 pop菜单 parent 右下角
public void showAsDropDown(View parent) {
popupWindow.showAsDropDown(parent,
10,
// 保证尺寸是根据屏幕像素密度来的
context.getResources().getDimensionPixelSize(
R.dimen.popmenu_yoff));

// 使其聚集
popupWindow.setFocusable(true);
// 设置允许在外点击消失
popupWindow.setOutsideTouchable(true);
// 刷新状态
popupWindow.update();
}

// 隐藏菜单
public void dismiss() {
popupWindow.dismiss();
}

// 适配器
private final class PopAdapter extends BaseAdapter {

@Override
public int getCount() {
// TODO Auto-generated method stub
return itemList.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return itemList.get(position);
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.pomenu_item, null);
holder = new ViewHolder();

convertView.setTag(holder);

holder.groupItem = (TextView) convertView
.findViewById(R.id.name);

} else {
holder = (ViewHolder) convertView.getTag();
}

holder.groupItem.setText(itemList.get(position));

return convertView;
}

private final class ViewHolder {
TextView groupItem;
}
}
}
下拉刷新是在触发TOuch事件时不停的控制HeaderView的位置。事件写在ListView中,在popupWindow中与在activity中一样的做法。只不过可能有位置错开问题。
我刚做过这个功能,ProgressBar在泡泡窗口不大好定位

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |