2012-12-15 4 views
-1

그래서 ~ 35 값이있는 회 전자가 있습니다. 다섯 번째 항목을 선택하면 선택 될 때 수행 할 작업 (두 번째 회 전자 채우기)이 수행됩니다. 내 문제는 곧 (< 1/2 초) 즉, 첫 번째 회 전자의 옵션 1을 선택하면 두 번째 회 전자의 값을 되돌릴 것입니다. 첫 번째 회 전자의 다섯 번째 항목은 계속 선택되지만 첫 번째 항목이 초당 두 번 선택되는 것처럼 작동합니다.Android Spinner는 30 초마다 첫 번째 값을 다시 선택합니다.

나는 이것 (거의 아무것도)에서 찾을 수있는 모든 것을 시도했지만 지금까지는 아무 것도 시도하지 못했습니다. 이것은 기본적으로 내 애플 리케이션에 더 나아가에 붙어있다.

전체 코드 : 그냥 첫 번째가 클릭 된 생각 때문에 클릭 된 하나 확인하는 if 문없이 내가 모두 동일 onselected 수신기를 사용하고 있었다

package com.nicotera.colton.londontransitguide; 
import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

import org.jsoup.*; 
import org.jsoup.nodes.Attributes; 
import org.jsoup.nodes.Document; 
import org.jsoup.nodes.Element; 
import org.jsoup.select.Elements; 

import android.app.Activity; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 

public class RoutesActivity extends Activity implements OnItemSelectedListener { 
    Spinner dirSpinner; 
    Spinner routeSpinner; 


static String [] namedDirections = new String [2]; 
private static final String TAG = "RoutesActivity"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_routes); 
    dirSpinner = (Spinner) findViewById(R.id.route_direction_spinner); // Create an ArrayAdapter using the string array and a default spinner layout 
    routeSpinner = (Spinner) findViewById(R.id.route_name_spinner); // Create an ArrayAdapter using the string array and a default spinner layout 
    routeSpinner.setOnItemSelectedListener(this); 
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.routes_array, android.R.layout.simple_spinner_item); 
    // Specify the layout to use when the list of choices appears 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // Apply the adapter to the spinner 
    routeSpinner.setAdapter(adapter); 
} 
@Override 
public void onItemSelected(AdapterView<?> parent, View view, 
     int pos, long id) { 
    Log.i(TAG, "Item selected"); 
    //DecimalFormat df = new DecimalFormat("00##"); 
    int tempPos = pos; 
    Log.i(TAG, ("Position of selected item: " + tempPos)); 
    int routeSelected; 
    if (tempPos < 17) 
     routeSelected = (tempPos + 1); 
    else if (tempPos >= 17 && tempPos < 29) 
     routeSelected = (tempPos + 2); 
    else 
     routeSelected = (tempPos + 3); 
    String temp; 
    if (routeSelected < 10) 
     temp = ("0") + routeSelected; 
    else 
     temp = ("") + routeSelected; 
    String url = "http://www.ltconline.ca/WebWatch/MobileAda.aspx?r=" + temp; 
    new MyInnerClass().execute(url); 

} 

public void directionSpinner (String directions []) { 
    int temp; 
    for (int i = 1; i <=2; i++) 
    { 
     temp = Integer.parseInt(directions[i]); 
     if (temp == 1) 
      namedDirections[(i-1)] = "Eastbound"; 
     else if (temp == 2) 
      namedDirections[(i-1)] = "Northbound"; 
     else if (temp == 3) 
      namedDirections[(i-1)] = "Southbound"; 
     else if (temp == 4) 
      namedDirections[(i-1)] = "Westbound";    
    } 
    //setContentView(R.layout.activity_routes); 

    dirSpinner.setOnItemSelectedListener(this); 
    ArrayAdapter<CharSequence> adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    adapter.add(namedDirections[0]); 
    adapter.add(namedDirections[1]); 
    dirSpinner.setAdapter(adapter); 
    Log.i(TAG, "spinner populated"); 
} 

public void onNothingSelected(AdapterView<?> parent) { 
    // Another interface callback 
} 

class MyInnerClass extends AsyncTask<String, Void, String> { 
    String [] directions = new String [3]; 
    String [] directionNames = new String [3]; 
    private static final String TAG = "RoutesActivity"; 
     @Override 
     protected void onPreExecute() { 
     super.onPreExecute(); 

     } 

     @Override 
     protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
     RoutesActivity.this.directionSpinner(directions); 
     } 

    @Override 
    protected String doInBackground(String... params) { 
     try{ 
      Pattern routeDirPattern = Pattern.compile("\\&d=(\\d{1,2})"); 
      Connection conn = Jsoup.connect(params[0]); 
      Document doc = conn.get(); 
      int i = 0; 
      Elements routeLinks = doc.select("a[href]"); 
      for (Element routeLink : routeLinks) { 
       i = (i + 1); 
       String name = routeLink.text(); 
       Attributes attrs = routeLink.attributes(); 
       String href = attrs.get("href"); 
       Matcher m = routeDirPattern.matcher(href); 
       if (m.find()) { 
         String number = m.group(1); 
         directions [i] = number; 
         directionNames [i] = name; 
         Log.i(TAG, directionNames [i]); 
       } 
      } 
      }catch(Exception e){Log.d("doinbackground exception", e.toString());} 

       return ("Done"); 
     } 
    } 
} 
+0

내가 문제를 발견,하지만 난 당신이 문제의 _again_을 게시했기 때문에 정말 짜증입니다. 행운을 빌어 요! (디버거를 사용하여 코드를 살펴보면 곧바로 해결할 수 있습니다.) – Sam

+0

실제로 이전 질문을 삭제했는데, 실제로 재 게시로 간주됩니까? – nicocolton

+0

나는 왜 원본을 삭제했는지 알아 차렸습니까? – Sam

답변

1

.

은 수정 된 코드입니다 :

@Override 
public void onItemSelected(AdapterView<?> parent, View view, 
     int pos, long id) { 
    Spinner spnr = (Spinner) parent; 
    Log.i(TAG, "Item selected"); 
    switch(parent.getId()) { 
    case R.id.route_name_spinner: 
    //DecimalFormat df = new DecimalFormat("00##"); 
    int tempPos = pos; 
    Log.i(TAG, ("Position of selected item: " + tempPos)); 
    int routeSelected; 
    if (tempPos < 17) 
     routeSelected = (tempPos + 1); 
    else if (tempPos >= 17 && tempPos < 29) 
     routeSelected = (tempPos + 2); 
    else 
     routeSelected = (tempPos + 3); 
    String temp; 
    if (routeSelected < 10) 
     temp = ("0") + routeSelected; 
    else 
     temp = ("") + routeSelected; 
    String url = "http://www.ltconline.ca/WebWatch/MobileAda.aspx?r=" + temp; 
    new MyInnerClass().execute(url); 
    case R.id.route_direction_spinner: 

    } 

} 
관련 문제