0

我有一个自定义列表视图...

我正在使用布局构建的列表视图的每个项目...

我的布局将有 4 个文本视图和一个 ImageButton.. 我的列表视图大小是 10 个元素。

现在我需要根据按下按钮的位置启动不同的活动..

就像如果用户按下第三个列表项 ImageButton 那么我需要显示第三个活动..

我面临的问题是我无法获得 ImageButton 的位置编号..

我添加了“setOnItemClickLIsener()”,但是当按下 imagebutton 时它没有被调用..

请帮助我如何获得按下的 ImageButton 的位置...

4

4 回答 4

0

有两种方法,一种是将监听器放在按钮上,然后在适配器上,您应该在每个按钮上放置一个监听器,在这些监听器上,您已经放置了正确的活动来调用。

或者您不能将侦听器放在按钮上并在列表上使用 setOnItemClickListener,那么您将拥有自己的位置并可以开始正确的活动。

于 2012-04-25T18:08:36.523 回答
0

在你的适配器的 getview() 方法中......把这个方法......

  mybutton.setOnClickListener(new OnClickListener() {
 private int pos = position;

  @Override
 public void onClick(View v) {
 Toast.makeText(context, "position="+ String.valueOf(pos), Toast.LENGTH_SHORT).show();

  }
 });

这将敬酒......(或者你可以得到位置的价值)

于 2012-04-25T18:17:12.620 回答
0

只需将其放入您的 XML 文件中:

<ListView  
....
....
android:focusable="false"
android:focusableInTouchMode="false"/>   
于 2013-06-20T14:52:33.880 回答
0

我是这样解决的。在我的适配器的 getview() 方法中,我将标签设置为我的 ImageButton 并将其保存在 setOnClickListener 方法中以供以后使用。holder 是在 getView() 方法中使用的静态类。

     public View getView(int position, View convertView, ViewGroup parent){ 
     //...
     holder.imgButton = (ImageButton)rowView.findViewById(R.id.imageViewBookProject);
     holder.imgButton.setTag(position);
     holder.imgButton.setOnClickListener(new View.OnClickListener() {

         public void onClick(View v) {
        String tag = v.getTag().toString();
        Log.d("clicked button", tag);
        //store the position of the clicked button for later use in the code
        lastClicked = Integer.parseInt(tag);
        //perform my action
        }

     });
于 2013-06-20T14:33:23.980 回答