2015-12-26 4 views
0

Привет, ребята У меня есть эта проблема, я хочу, чтобы мое приложение обновляло или обновляло элементы списка при нажатии на конкретный элемент spinner. вот скриншотAndroid: Refresh Listview Item после нажатия spinner Item

SS

, и я понятия не имею о том, что я собираюсь делать, и это мой код до сих пор :(

public class ViewGrade extends AppCompatActivity implements AdapterView.OnItemSelectedListener { 
    private ListView mylistView; 

    private String subj_code = ""; 
    private String subj_code_lab = ""; 

    private Spinner spinTerm; 

    private List<GradeList> gradeList = new ArrayList<GradeList>(); 
    private GradeAdapter arrayAdapter; 
    private ProgressDialog pDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_view_grade); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     spinTerm = (Spinner) findViewById(R.id.spinTerm); 

     String[] Term = new String[]{"Prelim", "Midterm", "Tentative Final"}; 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, Term); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinTerm.setAdapter(adapter); 

     SharedPreferences preferences = getSharedPreferences("MyApp", MODE_PRIVATE); 
     subj_code = preferences.getString("code", "UNKNOWN"); 
     subj_code_lab = preferences.getString("code_lab", "UNKNOWN"); 

     mylistView = (ListView) findViewById(R.id.list); 
     arrayAdapter = new GradeAdapter(this, gradeList); 
     mylistView.setAdapter(arrayAdapter); 
     new loadGrades().execute(); 


    } 

    public class loadGrades extends AsyncTask<Void, Void, Void>{ 
     String term = spinTerm.getSelectedItem().toString(); 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(ViewGrade.this); 
      // Showing progress dialog before making http request 
      pDialog.setMessage("Loading..."); 
      pDialog.show(); 
     } 

     @Override 
     protected Void doInBackground(Void... params) { 
      String url = null; 
      try { 
       url = "http://192.168.22.3/MobileClassRecord/getGrade.php?subj_code="+ URLEncoder.encode(subj_code, "UTF-8")+"&term="+URLEncoder.encode(term, "UTF-8"); 
      }catch (UnsupportedEncodingException e){ 
       e.printStackTrace(); 
      } 

      ServiceHandler jsonParser = new ServiceHandler(); 
      String json = jsonParser.makeServiceCall(url, ServiceHandler.GET); 
      Log.e("Response; ", "> " + json); 

      if (json != null){ 
       try { 
        JSONObject object = new JSONObject(json); 
        if (object != null){ 
         JSONArray grade_array = object.getJSONArray("grade"); 
         for (int i = 0; i < grade_array.length(); i++){ 
          JSONObject grade = (JSONObject) grade_array.get(i); 
          GradeList grade_list = new GradeList(); 
          grade_list.setName(grade.getString("stud_name")); 
          grade_list.setGrade(grade.getString("grade")); 
          grade_list.setRemark(grade.getString("remark")); 

          gradeList.add(grade_list); 
         } 
        } 
        arrayAdapter.notifyDataSetChanged(); 

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

      return null; 
     } 

     @Override 
     protected void onPostExecute(Void aVoid) { 
      super.onPostExecute(aVoid); 
      pDialog.dismiss(); 
     } 
    } 

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

    } 

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

    } 

    @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_view_grade, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()){ 
      case android.R.id.home: 
       Intent intent = new Intent(ViewGrade.this, SpecificClassRecord.class); 
       startActivity(intent); 
       return true; 
      case R.id.action_add_grade: 
       Intent intent1 = new Intent(ViewGrade.this, Grade.class); 
       startActivity(intent1); 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

ответ

2

adapter.notifydatasetChanged() или если вы знать конкретный элемент, вставленный/удалено, просто использовать adapter.notifyitemInserted/удалённый и т.д.

Добавьте этот код в onClickListener для блесны

+0

спасибо за ответ чувак, но onClickListener не может быть использована с блесной :( – CallMeJeo

+0

я имел в вид itemselectedlistener. сожалею –

1

Ove rride onItemClick() метод слушателя блесны, то внутри методы вы звоните adapter.notifydatasetChanged() из ListView

0
spinTerm.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { 
     // change the adapter values if your list is being changedin anyway 
     arrayAdapter.notifydatasetChanged(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parentView) { 
     // your code here 
    } 

});