我是Android开发的新手,我正在尝试构建一个ListVIEw,它使用gson从Web服务获取数据.我有一个模型类,一个列表类,一个适配器类和活动类.
该列表工作正常,它获得了数据,现在我想将OnItemClickListener集成到它并将数据传递给第二个活动.我想得到项ID(districtID)并将其传递给下一个Activity(ListVIEw)而不是行ID.如果有人可以向我展示光明,那就太好了……因为文档不是很清楚,因为我是新手.
以下是我的代码.
模型类
package com.sample.myapp;public class districtModel {private String ID;private String districtname;public String getdistrictID() { return ID;}public voID setID(String ID) { this.ID = ID;}public String getdistrictname(){ return districtname;}public voID setdistrictEN(String districtname){ this.districtname = districtname;}}
List类
public class districtList {private List<districtModel> districts;public List<districtModel> getdistricts(){ return districts;}public voID setdistrictList(List<districtModel> districts){ this.districts = districts;}}
Adapter类
public class districtAdapter extends ArrayAdapter<districtModel>{int resource;String response;Context context;private LayoutInflater dInflater;public districtAdapter(Context context, int resource, List<districtModel> objects) { super(context, resource, objects); this.resource = resource; dInflater = LayoutInflater.from(context);}static class VIEwHolder { TextVIEw Title;}public VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent){ VIEwHolder holder; //Get the current location object districtModel lm = (districtModel) getItem(position); //Inflate the vIEw if(convertVIEw==null) { convertVIEw = dInflater.inflate(R.layout.item_district, null); holder = new VIEwHolder(); holder.Title = (TextVIEw) convertVIEw .findVIEwByID(R.ID.district_name); convertVIEw.setTag(holder); } else { holder = (VIEwHolder) convertVIEw.getTag(); } holder.Title.setText(lm.getdistrictname()); return convertVIEw;}}
活动类
public class districtListActivity extends Activity{LocationManager lm;ArrayList<districtModel> districtArray = null;districtAdapter districtAdapter;districtList List;ListVIEw lv;public voID onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentVIEw(R.layout.districtList_layout); lv = (ListVIEw) findVIEwByID(R.ID.List_district); districtArray = new ArrayList<districtModel>(); districtAdapter = new districtAdapter(districtListActivity.this, R.layout.item_district, districtArray); lv.setTextFilterEnabled(true); lv.setAdapter(districtAdapter); try { new districtSync().execute("http://aws.something.com/service"); } catch(Exception e) {} lv.setonItemClickListener(new OnItemClickListener() { @OverrIDe public voID onItemClick(AdapterVIEw<?> parent, VIEw convertVIEw, int position, long ID) { AlertDialog.Builder adb=new AlertDialog.Builder(districtListActivity.this); adb.setTitle("LVSelectedItemExample"); adb.setMessage("Selected Item is = "+(lv.getItemIDAtposition(position))); adb.setPositivebutton("Ok", null); adb.show(); } }); **//i'd like to get the districtID from the Json data.**}private class districtSync extends AsyncTask<String, Integer, districtList> { protected districtList doInBackground(String... urls) { districtList List = null; int count = urls.length; for (int i = 0; i < count; i++) { try { // ntar diganti service RestClIEnt clIEnt = new RestClIEnt(urls[i]); try { clIEnt.Execute(RequestMethod.GET); } catch (Exception e) { e.printstacktrace(); } String Json = clIEnt.getResponse(); List = new Gson().fromJson(Json, districtList.class); // } catch(Exception e) {} } return List; } protected voID onProgressUpdate(Integer... progress) { } protected voID onPostExecute(districtList disList) { for(districtModel lm : disList.getdistricts()) { districtArray.add(lm); } districtAdapter.notifyDataSetChanged(); }}}
为了测试目的,现在我点击它将显示行ID的行,所以我知道onclick监听器工作,但我只是想让它抓住我的districtID所以我可以用它来传递给下一个活动.
非常感谢.
解决方法:
(从我的头脑中)试试这个:
((districtModel)lv.getAdapter().getItem(position)).getdistrictID();
总结 以上是内存溢出为你收集整理的android – OnItemClickListener从模型中获取数据全部内容,希望文章能够帮你解决android – OnItemClickListener从模型中获取数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)