2014-12-16 3 views
0

Моя идея заключается в использовании AsynTask для загрузки набора данных и сохранения в массиве. То, что я проверил и работает хорошо. В методе onPostExecute я вызываю функцию для обновления моего списка ListView и загружаю данные, хранящиеся в ArrayList.ListView + ArrayList + AsyncTask

Код:

protected void onPostExecute(String result) 
{  
    progressDialog.setProgress(99); 
    actualizarDisplay(); 
} 

Метод actulizarDisplay:

dataAdapter = new MyCustomAdapter(this,R.layout.servicio, listaServicios); 
ListView listView = (ListView) findViewById(R.id.listaServ); 
listView.setAdapter(dataAdapter); 

А класс MyCustomAdapter:

private class MyCustomAdapter extends ArrayAdapter<Servicio> 
{ 

private ArrayList<Servicio> servicioList; 

public MyCustomAdapter(Context context, int textViewResourceId,ArrayList<Servicio> servicioList) 
{ 
    super(context, textViewResourceId,servicioList); 
    this.servicioList = new ArrayList<Servicio>(); 
    this.servicioList.addAll(servicioList); 
} 

private class ViewHolder 
{ 
    TextView nombre, hora, lugar, fecha; 
    ImageView tipo; 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ViewHolder holder = null; 

    if (convertView == null) 
    { 
     LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = vi.inflate(R.layout.servicio, null); 

     holder = new ViewHolder(); 
     holder.nombre = (TextView) convertView.findViewById(R.id.titulo); 
     holder.lugar = (TextView) convertView.findViewById(R.id.lugar); 
     holder.hora = (TextView) convertView.findViewById(R.id.hora); 
     holder.fecha = (TextView) convertView.findViewById(R.id.fecha); 
     convertView.setTag(holder); 
    } 
    else 
    { 
     holder = (ViewHolder) convertView.getTag(); 
    } 

    Servicio servicio = servicioList.get(position); 
Log.i("ConvertView", servicio.getNombre()); // the correct value is displayed 
    holder.nombre.setText(servicio.getNombre()); 
    holder.hora.setText(servicio.getHora()); 
    holder.lugar.setText(servicio.getLugar()); 
    holder.fecha.setText(servicio.getFecha()); 

    if (servicio.tipo == 0) 
      holder.tipo.setImageResource(R.drawable.cultural); 

    return convertView; 

} 

}

И это ошибка в LogCat, ЛИНИЯ Е 423: holder.nombre.setText(servicio.getNombre());

неустранимые: Основной java.lang.NullPointerException на app.serviciosprote.Inicio $ MyCustomAdapter.getView (Inicio.java:423)
в android.widget.AbsListView.obtainView (AbsListView .java: 2350) на android.widget.ListView.measureHeightOfChildren (ListView.java:1409) на android.widget.ListView.onMeasure (ListView.java:1273) на android.view.View.measure (View.java : 15286) на android.widget.RelativeLayout.measureChild (RelativeLayout.java:602) на android.widget.RelativeLayout.onMeasure (RelativeLayout.java:415) на android.view.View.measure (View.java:15286) в android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:4832) в android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1390) на android.widget.LinearLayout.measureVertical (LinearLayout.java:681) на android.widget.LinearLayout.onMeasure (LinearLayout.java:574) на android.view.View.measure (View.java:15286) на android. view.ViewGroup.measureChildWithMargins (ViewGroup.java:4832) на android.widget.FrameLayout.onMeasure (FrameLayout.java:310)
на android.view.View.measure (View.java:15286) в android.widget .LinearLayout.measureVertical (LinearLayout.java:833) на android.widget.LinearLayout.onMeasure (LinearLayout.java:574) на android.view.View.measure (View.java:15286) в android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:4832) на android.widget.FrameLayout.onMeasure (FrameLayout.java:310) в com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2269)

Спасибо за попытку помочь

+0

Я думаю, проблема уже решена и заключалась в том, что если текст TextView очень длинный и не подходит, то не получается – mdl

+0

ваше объяснение на самом деле не имеет смысла. то, что вы описываете, не может привести к тому, что вы разместили stacktrace. – njzk2

+0

в отношении события на клик-слушателе, google он, вы найдете достаточно ловушек, чтобы помочь вам .. вопрос о другом вопросе может быть обманом .. – Elltz

ответ

0
Comment 

Это, вероятно, означает, что ваш первый текст не указан в этом XML-файле

servicio.XML

не имеет TextView с идентификатором título

holder.nombre = (TextView) convertView.findViewById(R.id.titulo); 

отсюда NullPointer

дважды проверьте, что вы звоните правильно TextView с правильным идентификатором в правильном формате XML

+0

спасибо. можете ли вы сказать мне, как я могу прослушивать событие при нажатии? – mdl

+0

Задайте другой вопрос. – YourDevMinion