来自jsonArray的ListView隐藏值

时间:2017-01-29 16:04:13

标签: android arrays listview

我的代码就是这个

JSONArray jsonArray  = jObj.getJSONArray("subject");
System.out.println(jsonArray.length());
ArrayList<String> arrayList = new ArrayList<>();

for(int i=0; i<jsonArray.length(); i++){
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    String id = jsonObject,getString("idSubject");
    String name = jsonObject.getString("name");
    arrayList.add(name);
}

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String(MainActivity.this, android.R.layout.simple_expandable_list_item_1, arrayList);
ListView mylist = (ListView) findViewById(R.id.subjectListView);
mylist.setAdapter(arrayAdapter);

我想知道是否可以将每个listView项与一个隐藏值(来自jsonArray的id值)相关联,并在调用listView的OnItemClickListener时获取它。 非常感谢

1 个答案:

答案 0 :(得分:0)

您可以在视图渲染过程中将隐藏值设置为标记。

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String(MainActivity.this, android.R.layout.simple_expandable_list_item_1, arrayList){
                @NonNull
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                    View view= super.getView(position, convertView, parent);
       JSONObject jsonObject = jsonArray.getJSONObject(position);
       String id = jsonObject,getString("idSubject");
                    view.setTag(id);
                }
            };

onItemSelected期间

 @Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

       String id=(String)view.getTag()
}

将此ID转换为原始类型(字符串,整数或其他任何内容)