1

我在列表视图上有一个按钮,单击该按钮将显示弹出窗口。我已经成功地实现了这一点。但问题是我想在单击的按钮位置显示弹出窗口。

View layout = inflater.inflate(R.layout.popup_layout,null);             
    pwindo = new PopupWindow(layout, 300, 250, true);
    pwindo.showAtLocation(layout, Gravity.NO_GRAVITY,  30, 40);
    pwindo.setOutsideTouchable(true);
    pwindo.setTouchable(true); 
    pwindo.setBackgroundDrawable(new BitmapDrawable());
    layout.setOnTouchListener(new OnTouchListener() {



            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                pwindo.dismiss();
                return false;
            }
        });

按钮代码

 vi = inflater.inflate(R.layout.list_row, null);
vi.findViewById(R.id.statusImage).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            showPopup();//to display popup thats given above
        }
    });
4

4 回答 4

1

您需要将buttons标签设置为它的位置,并且onClick您需要获取它:

button.setTag(position);
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) {
        int position = (Integer) v.getTag();
        // Do whatever you like with position
    }
});
于 2013-04-30T07:18:33.457 回答
1

单击按钮时,您可以获得列表中项目的位置。利用

list.getFirstVisiblePosition();

获得对接位置。从位置中减去 FirstVisiblePosition。您将获得点击位置。您可以在该位置显示弹出窗口。

于 2013-04-30T07:21:44.033 回答
0

您可以通过以下代码在列表视图中获取按钮单击的位置。

 (vi.findViewById(R.id.statusImage)).setOnClickListener(new OnClickListener() {
    public void onClick(View arg0) {
       Toast.makeText(Classname.this, "POSITION"+ position,Toast.LENGTH_SHORT).show();
       showPopup();
    }
 });
于 2013-04-30T07:14:23.363 回答