我创建一个列表视图,使用json从服务器检索数据并在列表视图中显示信息,我尝试检查id是否通过单击列表将成功传递到适配器将显示一个快餐栏,但我不知道如何将id传递给列表视图。这是我的代码。
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if(integer == 1)
{
//ADAPTER
ArrayAdapter<String> adapter=new ArrayAdapter<String>(c,android.R.layout.simple_list_item_1,players);
//ADAPT TO LISTVIEW
lv.setAdapter(adapter);
//LISTENET
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Snackbar.make(view,players.get(position),Snackbar.LENGTH_SHORT).show();
}
});
}else
{
Toast.makeText(c,"Unable to Parse",Toast.LENGTH_SHORT).show();
}
pd.dismiss();
}
//PARSE RECEIVED DATA
private int parse()
{
try
{
//ADD THAT DATA TO JSON ARRAY FIRST
JSONArray ja=new JSONArray(data);
//CREATE JO OBJ TO HOLD A SINGLE ITEM
JSONObject jo=null;
players.clear();
//LOOP THRU ARRAY
for(int i=0;i<ja.length();i++)
{
jo=ja.getJSONObject(i);
//RETRIOEVE NAME
String name=jo.getString("campaign_name");
String id=jo.getString("campaign_id");
//ADD IT TO OUR ARRAYLIST
players.add(name);
}
return 1;
} catch (JSONException e) {
e.printStackTrace();
}
return 0;
}
这是输出
答案 0 :(得分:2)
使用字段名称和 ID 创建模型类广告系列,并覆盖 toString 以返回您想要的内容显示在列表视图中(在您的案例名称中)
传递Campaign列表而不是适配器中的字符串列表
ArrayAdapter<Campaign> adapter=new ArrayAdapter<Campaign>(..)`
在解析方法中,
Campaign campaign = new Campaign()
campaign.name=jo.getString("campaign_name");
campaign.id=jo.getString("campaign_id");
players.add(campaign);`
最后,onItemclick
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Campaign item = parent.getAdapter().getItem(position)
Snackbar.make(view,item.id +" "+item.name,Snackbar.LENGTH_SHORT).show();
}
答案 1 :(得分:1)
与players
创建的campaign_name
ArrayList相同,为campaign_id
再创建一个ArrayList,添加商店中的所有id。
在onItemClick
方法中,使用campaign_id
ArrayList作为已点击项目的ID:
1。创建一个ArrayList:
ArrayList<Integer> arrCampaignID=new ArrayList<Integer>();
1。将parse()
更改为:
String id=jo.getString("campaign_id");
//ADD IT TO OUR ARRAYLIST
players.add(name);
arrCampaignID.add(id);
2。在onItemClick
中使用arrCampaignID
获取所选的广告系列ID:
@Override
public void onItemClick(AdapterView<?> parent,View view,int position,long id) {
String str_compaign_id= arrCampaignID.get(position);
}
注意,您也可以通过创建具有name和id属性的自定义类对象来执行此操作,但在这种情况下,您需要通过扩展ArrayAdapter来创建自定义适配器。