Mit hashMaps in benutzerdefinierten Adapter für das listView-Steuerelement

Folgende code ist der code, ich bin zurzeit für ein listView:

private class Asyncprojectlist extends AsyncTask<Void, Void, Void>{
        JSONArray JSar;
        JSONObject JSob;
        String project_title, project_sector;
        @Override
        protected void onPreExecute() {
            progressDialog =  new ProgressDialog(Allprojects.this);
            progressDialog.setCancelable(false);
            progressDialog.setMessage("Loading...");
            progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
            progressDialog.setProgress(0);
            progressDialog.show();
        }

        @Override
        protected Void doInBackground(Void... params) {
            UserFunctions user = new UserFunctions();
            JSob = user.allprojects();
            try {
                JSar = JSob.getJSONArray("data");

            } catch (JSONException e1) {
                e1.printStackTrace();
            }
            for(int i=0; i<JSar.length(); i++){
                try {
                    JSONObject newobj = JSar.getJSONObject(i);
                    project_title = newobj.getString("title");
                    project_sector = newobj.getString("sector");

                    HashMap<String, String> single = new HashMap<String, String>();
                    single.put("title", project_title);
                    single.put("sector", project_sector);

                    all_list.add(single);

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

            }
//         Log.i("json object", JSar.toString());
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            ListAdapter adapter = new SimpleAdapter(getApplicationContext(), all_list, R.layout.projectlist_frame, 
                    new String[]{"title","sector"}, new int[]{R.id.projecttitle, R.id.projectsector});
            setListAdapter(adapter);
            progressDialog.dismiss();
            list = getListView();
            list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

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

                    Intent toindividual = new Intent(Allprojects.this, Individual_project.class);
                    try {
                        toindividual.putExtra("nid", JSar.getJSONObject(position).getString("id"));
                        startActivity(toindividual);

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

}

Hier ist eine api aufgerufen, um die Daten abrufen und die all_list ist ein ArrayList<HashMap<>> wo es verwendet wird, durch die SimpleAdapter Werte wie projectTitle und projectStatus auf die listView layout. Alles funktioniert hier perfekt. Aber ich bin eine harte Zeit der Umsetzung der checkBox Zuhörer, die in die listView layout. Ich glaube, dass eine benutzerdefinierte adapter benötigt wird. In meinem Versuch zum erstellen einer benutzerdefinierten adapter ich konnte nicht kommen, mit eine funktionierenden code. Bitte helfen Sie bei der Implementierung einer benutzerdefinierten adapter, so dass der Listenansicht können Sie die checkBox CheckChangeListener umgesetzt.

wenn jemand noch auf der Suche nach einer Lösung, Rat, den ich prüfe meine Antwort auf ähnliche Frage: stackoverflow.com/a/19467717/1891118

InformationsquelleAutor Rakeeb Rajbhandari | 2013-08-19

Schreibe einen Kommentar