Java 从listAdapter中提取项目

Java 从listAdapter中提取项目,java,android,hashmap,listadapter,Java,Android,Hashmap,Listadapter,我从数据库中的JSON文件填充ArrayList,并将它们加载到ListAdapter中。我的代码: private JSONArray mList = null; private ArrayList<HashMap<String, String>> mItemList; ... public void updateJSONdata() { mItemList = new ArrayList<HashMap<String, String>>();

我从数据库中的JSON文件填充ArrayList,并将它们加载到ListAdapter中。我的代码:

private JSONArray mList = null;
private ArrayList<HashMap<String, String>> mItemList;
...
public void updateJSONdata() {
mItemList = new ArrayList<HashMap<String, String>>();

    JSONParser jParser = new JSONParser();
    JSONObject json = jParser.getJSONFromUrl(READ_COMMENTS_URL);

    try {
        mList = json.getJSONArray(TAG_ITEMS_REPORT);
        for (int i = 0; i < mList.length(); i++) {
            JSONObject c = mList.getJSONObject(i);

            // gets the content of each tag
            String iName = c.getString(TAG_ITEM_NAME);
            ...

            // creating new HashMap
            HashMap<String, String> map = new HashMap<String, String>();

            map.put(TAG_ITEM_NAME, iName);
           ...

            // adding HashList to ArrayList
            mItemList.add(map);
        }
} catch (JSONException e) {
        e.printStackTrace();
    }
}
现在,我非常确定
stringlst
不是提取数据的最优雅、最正确的方法。它确实为单击的每个位置提供了一个正确的字符串,但是所有值显然都包含在一个字符串中。如何一次提取一个值,例如TAG_ITEM_IFNO?谢谢。

您可以:

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    // 1st Approach
    HashMap<String, String> map = (HashMap<String, String>) l.getItemAtPosition(position);
    Set<Entry<String, String>> entrySet = map.entrySet();
    for(Entry<String, String> entry: entrySet) {
        String key=entry.getKey();
        String value=entry.getValue();
        if(key=="your_key_that_you_have_mapped_to_some_textview_in_your_layout") {
            // do what you want
        }
    }

    // 2nd Approach
    TextView tv=(TextView) v.findViewById(R.id.login_username);
    String myvalue=tv.getText().toString();
}
@覆盖
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
super.onListItemClick(左、右、位置、id);
//第一种方法
HashMap=(HashMap)l.getItemAtPosition(位置);
Set entrySet=map.entrySet();
for(条目:entrySet){
String key=entry.getKey();
字符串值=entry.getValue();
如果(key==“您的\u key\u您已经\u映射到\u布局中的一些\u textview\u”){
//做你想做的
}
}
//第二种方法
TextView tv=(TextView)v.findviewbyd(R.id.login\u用户名);
字符串myvalue=tv.getText().toString();
}
而不是:

final ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> parent, View viewClicked,
                            int position, long id) {
        String lst = mItemList.get(position).toString();
final ListView lv=getListView();
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共视图单击(AdapterView父级,视图单击,
内部位置,长id){
String lst=mItemList.get(position.toString();

这对我来说是个骗局

mItemList.get(position).get(value)
编码

 @Override
    public void onItemClick(AdapterView<?> parent, View viewClicked,
                            int position, long 
         Toast.makeText(ReportViewer.this, "Position " + mItemList.get(position).get(TAG_ITEM_COMMENT), Toast.LENGTH_LONG).show();;
        Log.d(" ReportView onItemClick",  mItemList.get(position).get(TAG_ITEM_COMMENT))
     });
}
@覆盖
公共视图单击(AdapterView父级,视图单击,
内位置,长
Toast.makeText(ReportViewer.this,“Position”+mItemList.get(Position).get(TAG_ITEM_COMMENT),Toast.LENGTH_LONG.show();;
Log.d(“ReportView onItemClick”,mItemList.get(position.get(TAG_ITEM_COMMENT))
});
}

你这是什么意思,请详细说明?你使用的是
ListActivity
对吗?很抱歉评论不清楚,我误解了你的答案
 @Override
    public void onItemClick(AdapterView<?> parent, View viewClicked,
                            int position, long 
         Toast.makeText(ReportViewer.this, "Position " + mItemList.get(position).get(TAG_ITEM_COMMENT), Toast.LENGTH_LONG).show();;
        Log.d(" ReportView onItemClick",  mItemList.get(position).get(TAG_ITEM_COMMENT))
     });
}