2014-12-22 2 views
0

이것은 내 주요 활동입니다.구문 분석 된 xml 데이터는 스피너 어댑터에 추가 할 수 없습니다.

public class MainActivity extends ActionBarActivity { 

private ArrayList<String> categories; 
private HandleXML obj; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Spinner element 
    Spinner spinnerbank = (Spinner) findViewById(R.id.spinner_bank); 

    // Spinner click listener 
    spinnerbank.setOnItemSelectedListener((OnItemSelectedListener) this); 

    ArrayList<String> categories = new ArrayList<String>(); 

    // Creating adapter for spinner 
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, categories); 

    // Drop down layout style - list view with radio button 
    dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    // attaching data adapter to spinner 
    spinnerbank.setAdapter(dataAdapter); 

} 

public void onItemSelected(AdapterView <?> parent, View view, int position, long id) { 
    // On selecting a spinner item 
    String item = parent.getItemAtPosition(position).toString(); 

    // Showing selected spinner item 
    Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show(); 

} 

public void onNothingSelected(AdapterView<?>arg0) { 
    // TODO Auto-generated method stub 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

public void open(View view){ 
    String finalUrl; 
     obj = new HandleXML(finalUrl); 
     obj.fetchXML(); 
     while(obj.parsingComplete); 
     categories.add(obj.getbank()); 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 

이이 : 난 그냥 adapter.problem은 아래와 같습니다 java.lang.runtime.exception, android.app.activitythread.performlaunchactivity 오류 등 on.Source 코드 회에 요소를 추가 할 수 없습니다 구문 분석 XML 내 HandleXML 클래스 :

public class HandleXML { 
private String bank = "Bank"; 
private String urlString = null; 
private XmlPullParserFactory xmlFactoryObject; 
public volatile boolean parsingComplete = true; 

public HandleXML(String url){ 
     this.urlString = url; 
    } 

    public String getbank(){ 
     return bank; 
    } 

    public void parseXMLAndStoreIt(XmlPullParser myParser) { 
     int event; 
     String text=null; 
     try { 
     event = myParser.getEventType(); 
     while (event != XmlPullParser.END_DOCUMENT) { 
      String name=myParser.getName(); 
      switch (event){ 
       case XmlPullParser.START_TAG: 
       break; 
       case XmlPullParser.TEXT: 
       text = myParser.getText(); 
       break; 

       case XmlPullParser.END_TAG: 
        if(name.equals("Bank")){ 
        bank = text; 
        } 
        else{ 
        } 
        break; 
        }   
        event = myParser.next(); 

       } 
       parsingComplete = false; 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 

} 

    public void fetchXML(){ 
      Thread thread = new Thread(new Runnable(){ 
      @Override 
      public void run() { 
       try { 
        URL url = new URL(urlString); 
        HttpURLConnection conn = (HttpURLConnection) 
        url.openConnection(); 
         conn.setReadTimeout(10000 /* milliseconds */); 
         conn.setConnectTimeout(15000 /* milliseconds */); 
         conn.setRequestMethod("GET"); 
         conn.setDoInput(true); 
         conn.connect(); 
       InputStream stream = conn.getInputStream(); 

       xmlFactoryObject = XmlPullParserFactory.newInstance(); 
       XmlPullParser myparser = xmlFactoryObject.newPullParser(); 

       myparser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES 
       , false); 
       myparser.setInput(stream, null); 
       parseXMLAndStoreIt(myparser); 
       stream.close(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 

     thread.start(); 
     } 
     } 
+0

'데이터 어댑터의 의미 resolved' 수 없습니다? 더 설명해주십시오. –

+0

dataadapter를 변수로 해석 할 수 없습니다. 이것은 내 오류 메시지입니다. – Projucti

답변

0

문제는 데이터 어댑터는 해결 될 수 없다. 당신이 dataadapteronCreate 내부 방법을 선언했기 때문에

그렇게 dataadapteronCreate 방법 외부에서 액세스 할 수 없습니다. 당신이 HandleXML obj를 선언대로 (다른 방법으로) 전체 수업 시간에 dataadapter에 액세스하려면 같은 방법으로 클래스 수준의 선언 :

private HandleXML obj; 
private ArrayAdapter<String> dataAdapter; 
+0

thanks.but는 문제를 해결하지 못합니다. (더 많은 오류가 발생합니다. create local variable add라고합니다. – Projucti