2017-03-11 7 views
1

ListViewにonItemClickを設定したいのですが、どこにコードを挿入する必要がありますか?もう1つ、getItemsOnPosition()からString配列 "name"と "errands"にオブジェクトを解析する方法は?ありがとう。 私はリストビューアイテムのレイアウトを使用しません。ちょうどこれとListViewのレイアウトです。おかげ私のコードに従ってListItemのonItemClickをどこに置くべきですか?getItemsOnPosition()から配列にオブジェクトを解析する方法は?

public class ErrandsFragment extends Fragment { 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_errands, container, false); 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    new ListTask().execute(); 
} 

class ListTask extends AsyncTask<Void, Void, ArrayList<HashMap<String, String>>> { 
    ProgressDialog progressDialog; 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     progressDialog = new ProgressDialog(getActivity()); 
     progressDialog.setMessage("Retrieving Datas"); 
     progressDialog.setIndeterminate(true); 
     progressDialog.setCancelable(true); 
     progressDialog.show(); 
    } 

    @Override 
    protected ArrayList<HashMap<String, String>> doInBackground(Void... params) { 
     WebService service = new WebService("My JSON", "GET", ""); 
     String jsonString = service.responseBody; 
     ArrayList<HashMap<String, String>> albums = new ArrayList<>(); 
     try{ 
      JSONArray array = new JSONArray(jsonString); 
      for (int i = 0; i < array.length(); i++) { 
       JSONObject object = array.getJSONObject(i); 
       String name= object.getString("name"); 
       String errands= object.getString("errands"); 
       HashMap<String, String> album = new HashMap<>(); 
       album.put("name", name); 
       album.put("errands", errands); 
       albums.add(album); 
      } 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return albums; 
    } 

    @Override 
    protected void onPostExecute(ArrayList<HashMap<String, String>> albums) { 
     super.onPostExecute(albums); 

     progressDialog.hide(); 
     ListView listView = (ListView)getView().findViewById(R.id.errands_list); 
     listView.setAdapter(new SimpleAdapter(
       getActivity(), 
       albums, 
       android.R.layout.simple_list_item_2, 
       new String[] { 
         "name", 
         "errands" 
       }, 
       new int[] { 
         android.R.id.text1, 
         android.R.id.text2 
       } 
     )); 
    } 
} 

}

答えて

0

あなたはonPostExecute()メソッド

@Override 
    protected void onPostExecute(ArrayList<HashMap<String, String>> albums) { 
     super.onPostExecute(albums); 

     progressDialog.hide(); 
     ListView listView = (ListView)getView().findViewById(R.id.errands_list); 
     listView.setAdapter(new SimpleAdapter(
       getActivity(), 
       albums, 
       android.R.layout.simple_list_item_2, 
       new String[] { 
         "name", 
         "errands" 
       }, 
       new int[] { 
         android.R.id.text1, 
         android.R.id.text2 
       } 
     )); 
listView.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

     Toast.makeText(getBaseContext()"item clicked!",Toast.LENGTH_SHORT).show(); 
     } 
    }); 
    } 
+0

多くのおかげでそれを行うことができます!それは魔法のように働いた。 –

+0

@FarellSujanto私の答えを受け入れること自由に感じる:) – Darish

関連する問題