0

我有一个带有自定义适配器的列表视图和一个行布局。该行由一个 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);
}

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

4

2 回答 2

1

在您的适配器中,通过使用将单选按钮视图的标签设置为 currentPosition

     yourbutton.setTag(position).

然后在 radioButton 上设置 onCheckedChangeListener。

在侦听器的 onCheckedChaged 方法中,您将获得状态已更改的按钮。从那个按钮,做

   yourButton.getTag(), 

这将为您提供此单选按钮所属的位置.. 看看它是否有效。

于 2015-03-13T05:01:39.540 回答
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

        }

    }
于 2015-03-13T04:56:59.563 回答