如何在ListView中的ImageButton元素上按下时获取ListItem位置

时间:2012-04-25 17:47:58

标签: android

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

我使用布局构建的List视图的每个项目......

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

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

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

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

我添加了“setOnItemClickLIstener()”但是在按下imagebutton时没有调用它..

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

4 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分: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();

  }
 });

这会担任这个职位......(或者你可以得到职位的价值)

答案 2 :(得分: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
        }

     });

答案 3 :(得分:0)

将它放在XML文件中:

<ListView  
....
....
android:focusable="false"
android:focusableInTouchMode="false"/>