包含单选按钮的ListView的上下文菜单

时间:2015-03-13 04:42:39

标签: android listview android-contextmenu android-radiobutton

我有一个带有自定义适配器和行布局的列表视图。该行包含textview,imageview和单选按钮。实现该方法后,我无法获取所单击视图的位置。

@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {

    Log.d("menuinfo: ",""+menuInfo); //This returns null
    menu.setHeaderTitle("Select action");
    getMenuInflater().inflate(R.menu.menu_testing, menu);
}

我认为罪魁祸首是单选按钮,但它是列表视图的重要部分,我无法将其删除。任何解决方法和建议表示赞赏。

2 个答案:

答案 0 :(得分:1)

您可以获取已从适配器类本身单击的行的位置

public class Myadapter extends BaseAdapter implements OnClickListener,OnBufferingUpdateListener{

@Override
    public View getView(final int position, View convertView, final ViewGroup arg2) {
        // TODO Auto-generated method stub

          View vi = convertView;

         crntposition=position;

          if(convertView==null){

              Context context=arg2.getContext();
               inflater = ( LayoutInflater )activity.
                       getSystemService(Context.LAYOUT_INFLATER_SERVICE);

         vi = inflater.inflate(R.layout.songlistrow, null);

        // vi.setTag(R.id.parentlay, holder.parnt); 
     }

// your code 

 vi.setOnClickListener(new OnItemClickListener(crntposition));

        return vi;

    }

private class OnItemClickListener  implements View.OnClickListener {
        private int mPosition;

        OnItemClickListener(int position) {

            mPosition = position;

            //System.out.println("pos"+mPosition);
        }

        @Override
        public void onClick(View arg0) {


          System.out.println("current position"+mPosition);// you can use the position here I have just printed it

        }

    }

答案 1 :(得分:1)

在适配器中,使用

将radiobutton视图的标记设置为currentPosition
     yourbutton.setTag(position).

然后在radioButton上设置onCheckedChangeListener。

在侦听器的onCheckedChaged方法中,您将获得状态已更改的按钮。从该按钮,执行

   yourButton.getTag(), 

这将给你这个radiobutton所属的位置.. 看看它是否有效。