2015-11-06 48 views
-1

我想創建一個微調器從數據庫中檢索數據,但OnItemSelectedListener將無法​​工作。它始終暗示adapterview.OnclickListener,但編碼需要OnClickListenerOnly。OnItemSelectedListener不斷更改爲適配器視圖

package com.example.win7.fyp; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.provider.Settings; 
import android.support.v7.app.ActionBarActivity; 

import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.List; 

public class student_register extends Activity implements OnItemSelectedListener { 
Toolbar toolbar; 

private ProgressDialog progressDialog; 

JsonParser jParser = new JsonParser(); 
private static String URL_TO_PASS = "http://arcafyp.xyz/chat/register_student.php"; 

SharedPreferences pref; 

EditText username5, password5 ,advisorName5; 
TextView advReg; 

String username1; 

String AndroidId; 

private ArrayList<Category> categoriesList; 
ProgressDialog pDialog; 
private Spinner spinnerFood; 


// Url to get all categories 
private String URL_CATEGORIES = "http://ekinidris.site40.net/chat/advisorName.php"; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_student_register); 
    pref = getApplicationContext().getSharedPreferences("MyPref", 0);// 0 - for private mode 



    username5 = (EditText)findViewById(R.id.register_matrixno); 
    password5 = (EditText) findViewById(R.id.register_ic); 
    advisorName5 = (EditText) findViewById(R.id.advName); 


    spinnerFood.setOnItemSelectedListener(this); 
    spinnerFood = (Spinner) findViewById(R.id.spinFood); 


    categoriesList = new ArrayList<Category>(); 

    // Add new category click event 


    new GetCategories().execute(); 
} 





private class GetCategories extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(student_register.this); 
     pDialog.setMessage("Fetching advisor name.."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 

    } 

    @Override 
    protected Void doInBackground(Void... arg0) { 
     ServiceHandler jsonParser = new ServiceHandler(); 
     String json = jsonParser.makeServiceCall(URL_CATEGORIES, ServiceHandler.GET); 

     Log.e("Response: ", "> " + json); 

     if (json != null) { 
      try { 
       JSONObject jsonObj = new JSONObject(json); 
       if (jsonObj != null) { 
        JSONArray categories = jsonObj 
          .getJSONArray("categories"); 

        for (int i = 0; i < categories.length(); i++) { 
         JSONObject catObj = (JSONObject) categories.get(i); 
         Category cat = new Category(catObj.getInt("phone_id"), 
           catObj.getString("name")); 
         categoriesList.add(cat); 
        } 
       } 

      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } else { 
      Log.e("JSON Data", "Didn't receive any data from server!"); 
     } 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
     //populateSpinner(); 
    } 

} 

/** 
* Adding spinner data 
* */ 
private void populateSpinner() { 
    List<String> lables = new ArrayList<String>(); 

    advisorName5.setText(""); 

    for (int i = 0; i < categoriesList.size(); i++) { 
     lables.add(categoriesList.get(i).getName()); 
    } 

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

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

    // attaching data adapter to spinner 
    spinnerFood.setAdapter(spinnerAdapter); 
} 









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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 

    if (id == R.id.register_send) { 
     new registerUser().execute(); 
     String newCategory = advisorName5.getText().toString(); 

     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 





class registerUser extends AsyncTask<String, String, String> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     Intent i = getIntent(); 
     String studentPhone_id = i.getStringExtra("phone_id").toString(); 
     String studentUsername = username5.getText().toString(); 
     progressDialog = new ProgressDialog(student_register.this); 
     progressDialog.setMessage("Processing Data" + studentPhone_id + studentUsername); 
     progressDialog.setIndeterminate(false); 
     progressDialog.setCancelable(true); 
     progressDialog.show(); 
    } 

    @Override 
    protected String doInBackground(String... strings) { 
     String studentUsername = username5.getText().toString(); // matrix no 
     String studentPassword = password5.getText().toString(); //cgpa 
     String studentAdvName = advisorName5.getText().toString(); //advisor name 


     Intent i = getIntent(); 
     String studentPhone_id = i.getStringExtra("phone_id").toString(); 



     List<NameValuePair> param = new ArrayList<NameValuePair>(); 
     param.add(new BasicNameValuePair("username",studentUsername)); 
     param.add(new BasicNameValuePair("phone_id",studentPhone_id)); 
     param.add(new BasicNameValuePair("password", studentPassword)); 
     param.add(new BasicNameValuePair("advisorName", studentAdvName)); 

     JSONObject json = jParser.makeHttpRequest("http://ekinidris.site40.net/chat/register_student.php","POST",param); 



     SharedPreferences.Editor editor = pref.edit(); 

     Log.d("data", json.toString()); 

     try { 
      int result = json.getInt("success"); 
      if(result == 1) { 

       editor.putString("phone_id",studentPhone_id); 
       editor.commit(); 

       Intent intent = new Intent(student_register.this, MainActivity.class); 
       intent.putExtra("phone_id", studentPhone_id); 
       intent.putExtra("username",studentUsername); 
       intent.putExtra("advisorName",studentAdvName); 

       startActivity(intent); 

       finish(); 
       progressDialog.dismiss(); 
      }else{ 
       To be edited..... 
       put some action refreshing the page 
      } 

     }catch (JSONException e){ 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String s) { 
     super.onPostExecute(s); 
     progressDialog.dismiss(); 
     finish(); 
    } 
} 

}

logcat的

11-06 16:43:02.289 22071-22071/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to start activity  ComponentInfo{com.example.win7.fyp/com.example.win7.fyp.student_register}: java.lang.ClassCastException: com.example.win7.fyp.student_register cannot be cast to android.view.View$OnClickListener 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1968) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1993) 
      at android.app.ActivityThread.access$600(ActivityThread.java:127) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1159) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:137) 
     at android.app.ActivityThread.main(ActivityThread.java:4507) 
     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:980) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747) 
     at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.ClassCastException: com.example.win7.fyp.student_register cannot be cast to android.view.View$OnClickListener 
     at com.example.win7.fyp.student_register.onCreate(student_register.java:78) 
     at android.app.Activity.performCreate(Activity.java:4465) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1932) 

+0

setOnItemClickListener不會有微調的作品。 – sud

+0

然後用什麼? –

+0

setOnItemSelectedListener – sud

回答

0

按照此代碼 -

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 
      // TODO Auto-generated method stub 
      String msupplier=supplier.getSelectedItem().toString(); 

      Log.e("Selected item : ",msupplier); 
} 

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

     } 
    }); 
+0

檢索相同的OnItemSelectedListener保持暗示adapterView –

+0

張貼您的日誌貓。這是什麼意思 – sud

+0

我試過這個,我改變了這個公共類student_register擴展了ActionBarActivity及其作品。但微調不會顯示數據,但在logcat中,它已經檢測到數據 –