2014-12-16 2 views
0

제 아이디어는 AsynTask를 사용하여 데이터 집합을 다운로드하고 arrayList에 저장합니다. 나는 그것을 잘 점검하고 잘 작동했다. 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; 

} 

}

그리고 이것은 로그 캣에서 오류가 발생, 린 E 423은 다음과 같습니다 holder.nombre.setText(servicio.getNombre());

치명적인 예외 : android.widget.AbsListView.obtainView에서 app.serviciosprote.Inicio $ MyCustomAdapter.getView (Inicio.java:423)
에서 주요 java.lang.NullPointerException이 (AbsListView 된 .java : 2,350)에 android.view.View.measure android.widget.ListView.onMeasure (ListView.java:1273) 에서 android.widget.ListView.measureHeightOfChildren (ListView.java:1409) 에서 (View.java : 15286) android.widget.RelativeLayout.measureChild (RelativeLayout.java:415)에서 android.widget.RelativeLayout.onMeasure (RelativeLayout.java:415)android.widget.LinearLayout.measureChildBeforeLayout에서 android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:4832) 에서 android.view.View.measure (View.java:15286) (LinearLayout.java:1390) 에서 51,515,에서 android.widget.LinearLayout.measureVertical (LinearLayout.java:681) android.widget.LinearLayout.onMeasure (LinearLayout.java:574)에서 android.view.View.measure (View.java:15286)에서 로이드에서 . android.widget.FrameLayout.onMeasure에서 view.ViewGroup.measureChildWithMargins (ViewGroup.java:4832) (FrameLayout.java:310) android.view.View.measure (View.java:15286) 에서
에서 android.widget .LinearLayout.measureVertical (LinearLayout.java:833)android.view.ViewGroup.measureChildWithMargins에서 android.view.View.measure (View.java:15286) (ViewGroup.java:4832) 에서 android.widget.LinearLayout.onMeasure (LinearLayout.java:574) 에서 451,515,에서 android.widget.FrameLayout.onMeasure com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure (PhoneWindow.java:2269)에서 (FrameLayout.java:310) 시도하는

을 돕기위한

감사합니다

+0

TextView의 텍스트가 매우 길고 적합하지 않은 경우 문제가 이미 해결되었다고 생각합니다. – mdl

+0

설명이 실제로 이해가되지 않습니다. 당신이 설명하는 것은 당신이 게시 한 스택 추적을 일으킬 수 없습니다. – njzk2

+0

클릭 리스너에서 이벤트에 관해서는, 구글, 당신은 당신을 도울 수있는 헛소리를 찾을 수 있습니다 .. 다른 질문을하는 것은 속임수 일 수 있습니다 .. – Elltz

답변

0
Comment 

이것은 아마도이 XML 파일에 첫 번째 텍스트 뷰가 없음을 나타냅니다.

servicio.XML

그러므로 titulo

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

nullpointer의 ID와 텍스트 뷰가없는

올바른 XML에 올바른 ID로 올바른 텍스트 뷰를 호출

한 번 확인

+0

감사. 클릭 할 때 이벤트에 대한 청취자를 어떻게 만날 수 있는지 말해 줄 수 있습니까? – mdl

+0

다른 질문을하십시오. – YourDevMinion

관련 문제