我有自定义列表视图...
我使用布局构建的List视图的每个项目......
我的布局将有4个文本视图和一个ImageButton ..我的列表视图大小为10个元素。
现在我需要根据按下按钮的位置启动不同的活动..
如果用户按下第三个列表项ImageButton,那么我需要显示第3个活动..
我面临的问题是我无法获得ImageButton的位置编号..
我添加了“setOnItemClickLIstener()”但是在按下imagebutton时没有调用它..
请帮助我如何获得按下ImageButton的位置...
答案 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"/>