2016-08-10 3 views
0

immer den Fehler in der Spinner mainActivity.java DateiIch mag ein Datum aus der Datenbank

package com.example.sachin.demodb; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.NavigationView; 
import android.support.design.widget.Snackbar; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBarDrawerToggle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.Spinner; 
import android.widget.TextView; 

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    private Spinner spinner; 
    private ArrayList<String> students; 
    private JSONArray result; 
    private TextView textViewName; 
    private TextView textViewCourse; 
    private TextView textViewSession; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     students = new ArrayList<String>(); 
     spinner = (Spinner) findViewById(R.id.spinner); 
     //spinner.setOnItemSelectedListener(this); 
     spinner.setOnItemSelectedListener(this); 
     textViewName = (TextView) findViewById(R.id.textViewName); 
     textViewCourse = (TextView) findViewById(R.id.textViewCourse); 
     textViewSession = (TextView) findViewById(R.id.textViewSession); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 


     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
       this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     drawer.setDrawerListener(toggle); 
     toggle.syncState(); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setNavigationItemSelectedListener(this); 


     //This method will fetch the data from the URL 
     getData(); 
    } 

    private void getData() { 
     //Creating a string request 
     StringRequest stringRequest = new StringRequest(com.example.sachin.demodb.Config.DATA_URL, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         JSONObject j = null; 
         try { 
          //Parsing the fetched Json String to JSON Object 
          j = new JSONObject(response); 

          //Storing the Array of JSON String to our JSON Array 
          result = j.getJSONArray(com.example.sachin.demodb.Config.JSON_ARRAY); 

          //Calling method getStudents to get the students from the JSON Array 
          getStudents(result); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 

        } 
       }); 

     //Creating a request queue 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 

     //Adding request to the queue 
     requestQueue.add(stringRequest); 
    } 

    private void getStudents(JSONArray j) { 
     //Traversing through all the items in the json array 
     for (int i = 0; i < j.length(); i++) { 
      try { 
       //Getting json object 
       JSONObject json = j.getJSONObject(i); 

       //Adding the name of the student to array list 
       students.add(json.getString(com.example.sachin.demodb.Config.TAG_USERNAME)); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 

     //Setting adapter to show the items in the spinner 
     spinner.setAdapter(new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, students)); 
    } 

    //Method to get student name of a particular position 
    private String getName(int position) { 
     String name = ""; 
     try { 
      //Getting object of given index 
      JSONObject json = result.getJSONObject(position); 

      //Fetching name from that object 
      name = json.getString(com.example.sachin.demodb.Config.TAG_NAME); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     //Returning the name 
     return name; 
    } 

    //Doing the same with this method as we did with getName() 
    private String getCourse(int position) { 
     String course = ""; 
     try { 
      JSONObject json = result.getJSONObject(position); 
      course = json.getString(com.example.sachin.demodb.Config.TAG_COURSE); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return course; 
    } 

    //Doing the same with this method as we did with getName() 
    private String getSession(int position) { 
     String session = ""; 
     try { 
      JSONObject json = result.getJSONObject(position); 
      session = json.getString(com.example.sachin.demodb.Config.TAG_SESSION); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return session; 
    } 



     //this method will execute when we pic an item from the spinner 
    // @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      //Setting the values to textviews for a selected item 
      textViewName.setText(getName(position)); 
      textViewCourse.setText(getCourse(position)); 
      textViewSession.setText(getSession(position)); 
     } 

     //When no item is selected this method would execute 
     // @Override 
     public void onNothingSelected(AdapterView<?> parent) { 
      textViewName.setText(""); 
      textViewCourse.setText(""); 
      textViewSession.setText(""); 
     } 



    @Override 
    public void onBackPressed() { 
     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawer.isDrawerOpen(GravityCompat.START)) { 
      drawer.closeDrawer(GravityCompat.START); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

    @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; 
    } 

    @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(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    @SuppressWarnings("StatementWithEmptyBody") 
    @Override 
    public boolean onNavigationItemSelected(MenuItem item) { 
     // Handle navigation view item clicks here. 
     int id = item.getItemId(); 

     if (id == R.id.nav_camera) { 
      // Handle the camera action 
     } else if (id == R.id.nav_gallery) { 

     } else if (id == R.id.nav_slideshow) { 

     } else if (id == R.id.nav_manage) { 

     } else if (id == R.id.nav_share) { 

     } else if (id == R.id.nav_send) { 

     } 

     DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     drawer.closeDrawer(GravityCompat.START); 

     return true; 

    } 
} 

in der folgenden Datei auf dem Spinner, i Fehler

spinner = (Spinner) findViewById(R.id.spinner); 
spinner.setOnItemSelectedListener(this); 

hier immer holen ist meine config.java Datei

package com.example.sachin.demodb; 

/** 
* Created by sachin on 8/10/2016. 
*/ 
public class Config { 
    //JSON URL 
    public static final String DATA_URL = "http://10.0.2.2/portal/fetchvisit.php"; 

    //Tags used in the JSON String 
    public static final String TAG_USERNAME = "username"; 
    public static final String TAG_NAME = "name"; 
    public static final String TAG_COURSE = "course"; 
    public static final String TAG_SESSION = "session"; 

    //JSON array name 
    public static final String JSON_ARRAY = "result"; 
} 

und jetzt ist dies my.xml Datei ..

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.sachin.demodb.MainActivity" 
    tools:showIn="@layout/app_bar_main"> 


    <Spinner 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/spinner" /> 

    <TableLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <TableRow> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textStyle="bold" 
       android:layout_marginRight="20dp" 
       android:layout_marginLeft="10dp" 
       android:text="Name" 
       /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textStyle="bold" 
       android:layout_marginRight="20dp" 
       android:text="Course" 
       /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:textStyle="bold" 
       android:layout_marginRight="20dp" 
       android:text="Session" 
       /> 
     </TableRow> 
     <TableRow> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="20dp" 
       android:layout_marginLeft="10dp" 
       android:id="@+id/textViewName" 
       /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="20dp" 
       android:id="@+id/textViewCourse" 
       /> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginRight="20dp" 
       android:id="@+id/textViewSession" 
       /> 
     </TableRow> 
    </TableLayout> 

</LinearLayout> 

Erste Fehler wie

Error:(50, 43) error: incompatible types: MainActivity cannot be converted to OnItemSelectedListener 

pls mich für diese helfen ..

Antwort

0

Da Sie Sie Aktivität in spinner.setOnItemSelectedListener(this); sind vorbei, Ihre Aktivität (MainActivity) müssen diese Schnittstelle implementieren. Daher wird Ihre MainActivity Definition wie folgt aussehen:

public class MainActivity extends AppCompatActivity 
     implements OnItemSelectedListener , NavigationView.OnNavigationItemSelectedListener { 
    // Also implement the methods in OnItemSelectedListener interface 
} 
+0

du bist ryt ... bt nt die Daten in der Spinner bekommen –

+0

Leider habe ich dich nicht bekommen. – Shaishav

+0

in Spinner ich habe nicht die Dropdown-Liste ... –

0
Your Activity is not implementing OnItemSelectedListener interface then you can't pass context to spinner item click listener implement OnItemSelectedListener in MainActivity. 

spinner1.setOnItemSelectedListener(this); 
Otherwise, you can pass an anonymous class instance which implements OnItemSelectedListener interface. 

spinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
+0

Fehler behoben, aber Spinner funktioniert nicht ... –

Verwandte Themen