2013-09-08 2 views
-1

내가 페이지의 HTML 구문 분석을 수행하고, 목록보기의 결과를 보려면이 응용 프로그램에서, 안드로이드 스튜디오와 안드로이드에 대한 내 애플 리케이션을 개발하고 있어요,하지만 난이 오류가있어 :ListView에 어댑터 충돌

java.lang.NullPointerException 
     at android.widget.ArrayAdapter.init(ArrayAdapter.java:310) 
     at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:104) 
     at com.megadown.megacodownloader.ParsingArrayAdapter.<init>(ParsingArrayAdapter.java:30) 
     at com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:256) 
     at com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:118) 
     at android.os.AsyncTask.finish(AsyncTask.java:631) 
     at android.os.AsyncTask.access$600(AsyncTask.java:177) 
     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4898) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:511) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773) 
     at dalvik.system.NativeStart.main(Native Method) 
09-08 02:46:26.289 3004-3004/? E/Launcher: Error finding setting, default accessibility to not found: accessibility_enabled 

그리고 나는 왜 내가이 오류가 있었는지 모를하지 않았다 !! 이것은 행의 오류 코드 :

adapter = new ParsingArrayAdapter(getActivity, titoli, descrizioni,immagini); 
      lista.setAdapter(adapter); 

ParsingArrayAdapter :

public class ParsingArrayAdapter extends ArrayAdapter<String>{ 

    //riferimenti statici alle risorse e agli id 
    private final static int LAYOUT = R.layout.riga_listview; 
    private final static int TITOLO = R.id.riga_listview_titolo; 
    private final static int DESCRIZIONE = R.id.riga_listview_descrizione; 
    private final static int IMMAGINE = R.id.imageView; 

    ArrayList<String> titoli; //lista dei titoli 
    ArrayList<String> descrizioni; 
    //ArrayList<Integer> immagini;//lista delle descrizioni 
    int [] immagini; 
    Context c; //context 
    LayoutInflater inflater; //layout inflater 

    public ParsingArrayAdapter(Context context, ArrayList<String> titoli, ArrayList<String> descrizioni, int[] immagini) 
    { 
     super(context,TITOLO); 
     this.c = context; 
     this.titoli = titoli; 
     this.descrizioni = descrizioni; 
     this.immagini = immagini; 
     this.inflater = LayoutInflater.from(c); 
    } 

    @Override 
    public int getCount() 
    { 
     return titoli.size(); //ritorno lunghezza lista (= numero dei titoli) 
    } 

    //quando la lista richiede una view 
    @Override 
    public View getView(int pos,View view,ViewGroup parent) 
    { 
     CacheRiga cache; //cache 
     if(view==null)//se � la prima volta che viene richiesta la view 
     { 
      // creo la view ma non l'attacco alla lista in quanto devo ancora modificare 
      // i testi delle textview 
      view = inflater.inflate(LAYOUT, parent,false); 
      cache = new CacheRiga(); //inizializzo la cache 
      cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo 
      cache.descrizione = (TextView) view.findViewById(DESCRIZIONE);//collego descrizione 
      cache.img = (ImageView) view.findViewById(IMMAGINE); 
      view.setTag(cache);//collego view con cache 
     } 
     else 
     { 
      cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view 
     } 

     cache.titolo.setText(titoli.get(pos)); //imposto il titolo 
     cache.descrizione.setText(descrizioni.get(pos)); 
     // if(pos>0) 
     //{ 
      cache.img.setImageResource(immagini[pos]); 
     //} 
     // e la descrizione 

     return view; 
    } 

    private class CacheRiga { // classe per la cache delle righe 
     public TextView titolo; // cache titolo 
     public TextView descrizione; // cache descrizione 
     public ImageView img; 
    } 

시 초기화 :

ArrayList<String> titoli; //lista dei titoli 
     ArrayList<String> descrizioni; //lista delle descrizioni 
     // ArrayList<Integer> immagini; 
     int [] immagini; 


     titoli = new ArrayList<String>(); 
     descrizioni = new ArrayList<String>(); 
     //immagini = new ArrayList<Integer>(); 
     immagini = new int[500]; 
+0

이 부분에 대한 자세한 정보가 필요합니다. 케이스가 ParsingArrayAdapter 생성자의 어딘가에 있다고 상상하지만 ArrayAdapter 기본 생성자에 null 객체를 전달하고 있습니다. – kcoppock

+0

이러한 인수 중 하나는 'null'이어야합니다. –

+0

게시 됨! :) please read – lillogoal

답변

1

에러 로그에 표시된 init() 방법은 이러한

private void init(Context context, int resource, int textViewResourceId, List<T> objects) { 
    mContext = context; 
    // line 310 below 
    mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    mResource = mDropDownResource = resource; 
    mObjects = objects; 
    mFieldId = textViewResourceId; 
} 
로서 구현

해당 줄에 NullPointerException을 던질 수있는 유일한 것은 null 인 경우 context입니다. 귀하의 getActivity() 메소드는 여기에 null을 반환해야합니다.

adapter = new ParsingArrayAdapter(getActivity, titoli, descrizioni,immagini); 
            ^// must be returning null 
+0

고마워, 그럼 내 문제를 해결하는 방법? 내 adapater에서 내가 일하는 애플 리케이션에 추가해야 할 것은 무엇입니까? – lillogoal

+0

@lillogoal'getActivity()'가'null'을 반환하지 않는지 확인하십시오. –

+0

모르겠지만 rwturn null이 아니라고 생각합니다. 왜냐하면 저는 Fragment에서 클래스를 확장하기 때문에 getactivity 메소드를 사용합니다 ...이 문제를 해결하는 방법은 무엇입니까? – lillogoal