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
總結
以上是生活随笔為你收集整理的android onitemclicklistener 参数,android – OnItemClickListener从模型中获取数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 悬浮窗口和主界面同时显示
- 下一篇: android 弹窗in,Android