我有一个带有3个标签的ViewPager。这些标签是相同的片段。它有一个自定义listView,包含两个textview和一个imagebutton。所以,我有一个适配器和每个项目的类。当我加载列表时,我想显示或不显示项目类中值的基础上的按钮。好吧,当Activity加载时,那些图像只是忽略该值并随机显示或不显示。
这是适配器(我试图用holder.descripcion
中的值填充d.getEnlace()
并且它正确显示,但按钮按照他想要的方式执行:
public class documentoAdapter extends ArrayAdapter<Documento> {
private final ArrayList<Documento> lista;
LayoutInflater inflater;
private String nombre, foto;
public documentoAdapter(Context context, ArrayList<Documento> lista) {
super(context, 0, lista);
this.lista = lista;
inflater = LayoutInflater.from(context);
}
@Override
public View getView(int position, View convertView,ViewGroup parent) {
final ViewHolder holder;
final Documento d = getItem(position);
if(convertView == null){
convertView = inflater.inflate(R.layout.documento, null);
}
holder = new ViewHolder();
holder.nombre = (TextView)convertView.findViewById(R.id.textNombre);
holder.descripcion = (TextView)convertView.findViewById(R.id.textDescripcion);
holder.enlace = (ImageButton)convertView.findViewById(R.id.imagenDescargar);
holder.nombre.setText(d.getNombre());
holder.descripcion.setText(Html.fromHtml(d.getDescripcion()));
holder.descripcion.setMovementMethod(LinkMovementMethod.getInstance());
if(!(d.getEnlace().equals("null"))){
holder.enlace.setVisibility(View.VISIBLE);
}
return convertView;
}
class ViewHolder {
TextView nombre;
TextView descripcion;
ImageButton enlace;
}
public int getCount() {
return lista.size();
}
//public boolean isEnabled(int position) {
// return false;
//}
public Documento getItem(int arg0) {
return lista.get(arg0);
}
public long getItemId(int position) {
return position;
}
}
项目的类别:
public class Documento {
private String nombre, descripcion, enlace;
private documentoAdapter adapter;
public Documento(String nombre, String descripcion, String enlace) {
this.nombre = nombre;
this.descripcion = descripcion;
this.enlace = enlace;
}
public String getNombre() {
return nombre;
}
public String getDescripcion() {
return descripcion;
}
public String getEnlace() {
return enlace;
}
public documentoAdapter getAdapter() {
return adapter;
}
public void setAdapter(documentoAdapter adapter) {
this.adapter = adapter;
}
}
并在片段的onCreate中我设置了适配器,如下所示:
documentoAdapter adapter = new documentoAdapter(getActivity(), datos);
ListView document_list = (ListView)rootView.findViewById(R.id.documentListView);
document_list.setAdapter(adapter);
答案 0 :(得分:0)
两件事:
你的ViewHolder
现在是多么无用。我们的想法是,每View
只实例化一个,然后在View
被回收时重复使用。
2.请记住,列表行的View
会被回收。因此Button已经可以设置为可见。如果您不想显示它,则需要将其设置为隐藏。