我已经实现了一个listview(每个项目都是一个buttom),现在我想通过使用ViewHolder来提高效率。这是我的问题,我不知道在哪里必须覆盖这些按钮的OnClick方法。
这是我的ArrayAdapter的getView:
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder view;
if(convertView==null)
{
view = new ViewHolder();
LayoutInflater inflator = activity.getLayoutInflater();
convertView = inflator.inflate(R.layout.layout_opcion, null);
view.b_opcion = (Button) convertView.findViewById(R.id.boton_opcion);
**view.b_opcion.setOnClickListener(new View.OnClickListener() {...});**
convertView.setTag(view);
}
else
{
view = (ViewHolder) convertView.getTag();
}
**view.b_opcion.setOnClickListener(new View.OnClickListener() {...});**
view.b_opcion.setText(getItem(position));
return convertView;
}
}
此OnClick方法必须显示有关所选项目的一些信息,所以这是我的问题。 我可以在
中覆盖此方法吗?if(convertView == null){HERE}
(为了做到这一点)? 或者相反,在这个IF中,必须只有引用膨胀布局的代码行?
答案 0 :(得分:0)
if if if statement后你想要它。在if语句中,您将只获得对View的UI元素的引用。在if语句之后,您可以进行更改,设置侦听器等。
答案 1 :(得分:0)
我会在视图持有者中放置一个参数来定义行的某些标识(例如Id或位置)
在您正在使用的if之外设置此信息(在view.b_opcion.setText(...
之前或之后)我将定义一个实现OnClickListener的侦听器类,并将相同的单个实例附加到第一个if语句中的所有视图。
在onlick监听器中,您可以调用getTag进行查看,将对象转换为viewholder,然后从viewholder获取您的id / position。之后,您可以访问该对象并对您拥有的数据执行任何操作:视图,适配器项等。