2017-01-10 1 views
-1

Dies ist der Code, den ich von JSON-Daten nehmen, i übergibt es an einen Arrayview.findViewById für Listview getChildAt() return Nullpointer

public class CheckboxMCQ extends Fragment { 

private View rootview; 
private View footerView; 
private View header; 
private ListView questionAnswerList; 
CheckboxAdapter checkboxAdapter; 
ArrayList<checkboxmodel> arraystoreanswer; 
ArrayList<checkboxmodel> arraytemppreselect; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    rootview = inflater.inflate(R.layout.fragment_checkbox_mcq, container, false); 

    questionAnswerList = (ListView) rootview.findViewById(R.id.question_answer_list); 
    footerView = ((LayoutInflater) getParentFragment().getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer, null,false); 
    header = ((LayoutInflater) getParentFragment().getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.header, null,false); 
    questionAnswerList.addFooterView(footerView); 
    questionAnswerList.addHeaderView(header); 
    arraystoreanswer = new ArrayList<checkboxmodel>(); 
    arraytemppreselect = new ArrayList<checkboxmodel>(); 

    checkboxAdapter = new CheckboxAdapter(getActivity(), arraystoreanswer,CheckboxMCQ.this , ss_id); 
    questionAnswerList.setAdapter(checkboxAdapter); 


    return rootview; 
} 


/*preselect operation*/ 
public void preselectoperation(final String uid, final String sf_id, final String ssid, final String sqid, final String order) { 

    class AsyncTaskRunner extends AsyncTask<String,String,JSONObject> { 
     String response; 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
     } 

     @Override 
     protected JSONObject doInBackground(String... params) { 
      urlLink url = new urlLink(); 
      JSONObject jsonObject = url.checkboxpreselectrow(uid, sf_id, ssid, sqid); 
      return jsonObject; 
     } 

     @Override 
     protected void onPostExecute(JSONObject jsonObject) { 
      super.onPostExecute(jsonObject); 
      try { 
       response = jsonObject.getString("success"); 
       if (response.equals("1")) 
       { 
        JSONArray job = jsonObject.getJSONArray("record"); 
        for (int i = 0; i<job.length(); i++){ 
         JSONObject jsonOb = job.getJSONObject(i); 
         arraytemppreselect.add(new checkboxmodel(jsonOb.getString("ans_id"))); 
        } 

        for (int i=0; i < arraystoreanswer.size(); i++){ 

         for (int j=0; j < arraytemppreselect.size(); j++){ 
          if((arraystoreanswer.get(i).getAnswerid().equals(arraytemppreselect.get(j).getAnswerid()))){ 
           //do something for equals 
           Log.i("same value",arraystoreanswer.get(i).getAnswerid()); 
//         Log.i("position value",""+ i); 
           changebackgroundpreselect(i+1); 
          } 
         } 
        } 
       } 
       else { 
       } 
      } catch (JSONException e1) { 
       e1.printStackTrace(); 
      } 
     } 
    } 
    new AsyncTaskRunner().execute(); 
} 

public void changebackgroundpreselect(int position){ 
//   if (i == position){ 
    View view = questionAnswerList.getChildAt(position); 
    Log.i("getChildAt",""+ position); 
      CheckBox cb = (CheckBox) view.findViewById(R.id.answer_content); 
      cb.setBackgroundResource(R.drawable.checkboxbuttonselected); 
//   } 
} 
} 

Dies ist meine Leere Funktion, weiß, dass ich das Hauptproblem hier ist, aber weiß nicht, wie es zu lösen, GetView die Listenansicht null zurück die Position ich es, aber zurückkehren Nullpointer an hier:

CheckBox cb = (CheckBox) view.findViewById(R.id.answer_content); 

Sorry für mein Englisch gebrochen, danke Mein Fehlerprotokoll enter image description here

+1

fügen Sie bitte vollständig java und Fehlercode versuchen changebackgroundpreselect(i+1);-changebackgroundpreselect(i);

Post vollständigen Code zu ändern ... – W4R10CK

+0

@ W4R10CK habe ich mein Fehlerprotokoll aktualisieren, aber ich denke, das Problem von View starten view = questionAnswerList.getChildAt (Position); hier –

+0

Bitte füge vollen Java-Code hinzu –

Antwort

0

den Adapter verwenden Blick auf Position zu bekommen

statt:

View view = questionAnswerList.getChildAt(position); 

, wenn Sie den vollständigen Code schreiben i mit Code fix helfen würde hoffen, dass es

+0

mein Quellcode hier –

0

hilft Ich glaube, Sie sind Passierposition i + 1. genau das Problem zu identifizieren

+0

Ich poste den Quellcode hier dy –

+0

wo fügen Sie Elemente zu arrystoreanswer Liste hinzu und haben Sie versucht über Änderung? – Omer

+0

arrystoreanswer Liste ist nur die große Arraylist zu prüfen, ob es existiert oder nicht, wenn sie den gleichen Wert haben, dann führen Sie die Funktion zum Ändern der Checkbox in FrageAnswerList –