2016-08-09 14 views
-1

Ich habe benutzerdefinierte Alertdailog mit Liste und überprüfen, ich versuche, ausgewählte Checkbox in Pref, wie Sie ausgewählte Artikel in gemeinsamen Präferenz speichern, kann ich Werte aus der Liste auswählen? Kann jemand Hilf mir dabei?So speichern Sie ausgewählte Elemente in Pref

 class LoadAlldata extends AsyncTask<String, String, ArrayList<HashMap<String, String>>> { 

     ArrayAdapter<String> adapterallstates; 
     private ProgressDialog pDialog; 

     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 
      pDialog = new ProgressDialog(TestCountry.this); 
      pDialog.setMessage("Please.."); 
      pDialog.setIndeterminate(true); 
      // pDialog.setIndeterminateDrawable(getResources().getDrawable(R.drawable.custom_progress)); 
      pDialog.setCancelable(true); 
      pDialog.show(); 

     } 

     protected ArrayList<HashMap<String, String>> doInBackground(String... args) { 
      ServiceHandler sh = new ServiceHandler(); 

      // Making a request to url and getting response 
      statedata = new ArrayList<HashMap<String, String>>(); 
      String jsonStr = sh.makeServiceCall(STATE_URL, ServiceHandler.GET); 

      Log.d("Response: ", "> " + jsonStr); 

      if (jsonStr != null) { 
       try { 
        jsonObj = new JSONArray(jsonStr); 
        // state_list = jsonObj.getJSONArray(COUNTRY_LIST); 

        // looping through All Contacts 
        for (int i = 0; i < jsonObj.length(); i++) { 
         JSONObject c = jsonObj.getJSONObject(i); 

         // creating new HashMap 
         HashMap<String, String> map = new HashMap<String, String>(); 
         map.put(STATE_ID, c.getString(STATE_ID)); 
         map.put(STATE_NAME, c.getString(STATE_NAME)); 
         statedata.add(map); 

        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } else { 
       Log.e("ServiceHandler", "Couldn't get any data from the url"); 
      } 

      return statedata; 
     } 

     protected void onPostExecute(ArrayList<HashMap<String, String>> result) { 

      super.onPostExecute(result); 
      pDialog.dismiss(); 

      final String[] arrallstates = new String[statedata.size()]; 
      checked_state=new boolean[statedata.size()]; 
      for (int index = 0; index < statedata.size(); index++) { 
       HashMap<String, String> map = statedata.get(index); 
       arrallstates[index] = map.get(STATE_NAME); 
      } 

      txtvw.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View w) { 



        new AlertDialog.Builder(TestCountry.this) 

          .setTitle("Choose a Days") 

          .setMultiChoiceItems(arrallstates, null, new DialogInterface.OnMultiChoiceClickListener() { 

           @Override 
           public void onClick(DialogInterface dialog, int which, boolean isChecked) { 
// TODO Auto-generated method stub 

//storing the checked state of the items in an array 
            checked_state[which] = isChecked; 
           } 
          }) 
          .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

           @Override 
           public void onClick(DialogInterface dialog, int which) { 
// TODO Auto-generated method stub 
            String display_checked_days = ""; 
            for (int i = 0; i < arrallstates.length; i++) { 
             if (checked_state[i] == true) { 
              display_checked_days = display_checked_days + " " + arrallstates[i]; 
             } 
            } 
            Toast.makeText(TestCountry.this, "The selected is" + display_checked_days, Toast.LENGTH_SHORT).show(); 

//clears the array used to store checked state 
            for (int i = 0; i < checked_state.length; i++) { 
             if (checked_state[i] == true) { 
              checked_state[i] = false; 
             } 
            } 
//used to dismiss the dialog upon user selection. 
            dialog.dismiss(); 
           } 
          }).create().show();; 
       } 
      }); 

     } 
    } 
+1

Ihre Frage ist nicht ganz klar. Können Sie Ihr Problem genauer erklären? –

+0

Was meinst du mit per id? – Alikbar

+0

ID sobald Sie aus der Aktivität B – rosy

Antwort

0

Schreiben Sie zuerst eine Methode, um setSelection manuell in Adapter zu setzen.

private int selectedItem = -1; 

public void setSelectedItem(int position) { 
     selectedItem = position; 
     notifyDataSetChanged(); 
    } // Here selectedItem is global variable 

In onBindViewHolder diesen Code hinzu:

if (position == selectedItem){ 
viewHolder.chkSelected.setChecked(stList.get(position)); 
viewHolder.chkSelected.setTag(stList.get(position)); 
} else { 
viewHolder.chkSelected.setChecked(stList.get(position).isselected()); 
viewHolder.chkSelected.setTag(stList.get(position)); 
} 

Von Ihrer Aktivität Sie setSelectedItem (Position) von Ihrem Adapter insance verlangen. Um die Position zu erhalten, haben Sie die Chekbox-ID bereits kennengelernt, so dass Sie die Position dieser ID aus der Liste abrufen können.

Zur Position von Liste zu erhalten:

private int getSelectedItem(List<String> stList, String name) { 
    int pos = -1; 
    for(int i=0; i<stList.size(); i++) { 
    if(name.equals(stList.get(i)){ 
    pos = i; 
    break; 
    } 
    } 
return pos; 
} 
+0

Ich bekomme ID, wie wird es mit meinen Listendaten übereinstimmen? for (String name: namesList) { System.out.println ("Tests" + Name); } – rosy

+0

Was ist der Unterschied in If (Position == selectedItem) { – rosy

+0

@rosy Sie sind neu in Android und Entwicklung im Allgemeinen, oder? Und Sie erwarten, dass jemand die ganze Arbeit für Sie erledigt ... – Dogcat

0

wie Try this:

Erste make-Klasse mit Getter-Setzer:

private boolean checked; 
public boolean isChecked() { 
    return checked; 
} 

public void setChecked(boolean checked) { 
    this.checked = checked; 
} 

Und in Adapter Class in GetView Schreib-Code wie folgt aus .

FilterModelClass model=stList.get(position); 
viewHolder.chkbox.setOnCheckedChangeListener(new CheckUpdateListener(model)); 

Make-Klasse wie unten zu handhaben checkedChangedListener

/******************* 
* Checkbox Checked Change Listener 
********************/ 

private final class CheckUpdateListener implements CompoundButton.OnCheckedChangeListener { 
    private final FilterModelClass model; 

    private CheckUpdateListener(FilterModelClass model) { 
     this.model = model; 


    } 


    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     Log.i("onCheckedChanged", "isChecked: " + isChecked); 
     model.setChecked(isChecked); 


     notifyDataSetChanged(); 




    } 
} 
+0

funktioniert noch nicht – rosy

+0

können Sie den bearbeiteten Code überprüfen? – rosy

+0

was hast du gepostet ?? Dies ist keine gute Möglichkeit, jedes Mal in gemeinsamen Preferences –

Verwandte Themen