android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据

我是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 districts;

public List getDistricts(){

return districts;

}

public void setDistrictList(List districts){

this.districts = districts;

}

}

Adapter类

public class DistrictAdapter extends ArrayAdapter{

int resource;

String response;

Context context;

private LayoutInflater dInflater;

public DistrictAdapter(Context context, int resource, List 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 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();

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 {

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();

标签:onitemclicklistener,android

来源: https://codeday.me/bug/20190721/1495055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值