2012-04-25 63 views
0

我有一个自定义列表视图的ImageButton元素上按下时...如何获得列表项位置的ListView

我与布局构建列表视图中的每一个项目......

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

现在我需要推出取决于按下按钮的位置不同的活动..

一样,如果用户按下第三列表项的ImageButton然后我需要显示第三活动..

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

我已经加入“setOnItemClickLIstener()”,但被按下的ImageButton时,其没有得到所谓的..

请帮我如何得到positio n被按下的ImageButton ...

回答

0

有两种方法可以做到这一点,一种是将监听器放在按钮上,然后在适配器上,您应该在每个按钮上放置一个监听器,并在这些监听器上放置正确的活动打电话。

或者你不能把听者的按钮,列表上使用setOnItemClickListener,那么你将有你的位置,并可以开始正确的活动。

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(); 

    } 
}); 

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

0

我以这种方式解决。 在我getview()我的适配器的方法,我设置的标签我的ImageButton并将其保存在使用后的 setOnClickListener方法。持有者是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 
     } 

    }); 
0

只是把这个在XML文件中:

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

@Jeff ...谢谢! – 2013-06-21 11:10:39