【问题标题】:Extract items from listAdapter从 listAdapter 中提取项目
【发布时间】:2015-05-23 09:39:01
【问题描述】:

我从数据库中的 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();
    }
}

在这里我更新我的ListAdapter 并设置onItemCLick

 private void updateList() {
    final ListAdapter adapter = new SimpleAdapter(this, mItemList,
            R.layout.single_item_view,
            new String[]{TAG_ITEM_NAME, TAG_ITEM_INFO,
                    TAG_ITEM_QUANTITY, TAG_ITEM_COMMENT, TAG_ITEM_LOCATION},
            new int[]{R.id.singleItemView_itemName, R.id.singleItemView_ItemInfo,
                    R.id.login_username});

    setListAdapter(adapter);
    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();
            Toast.makeText(ReportViewer.this, "Position " + parent.getItemAtPosition(position), Toast.LENGTH_LONG).show();
            Log.d(" ReportView onItemClick",  
         });
    }

现在,我很确定String lst 不是提取数据的最优雅和正确的方法。它确实为单击的每个位置提供了一个正确的字符串,但是显然所有值都包含在一个字符串中。如何一次提取一个值,例如 TAG_ITEM_IFNO?谢谢。

【问题讨论】:

    标签: java android hashmap listadapter


    【解决方案1】:

    这对我有用

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

    【讨论】:

      【解决方案2】:

      你可以这样做:

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

      代替:

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

      【讨论】:

      • 这是什么意思,请详细说明?您使用的是ListActivity 对吗?
      • 抱歉评论不清楚,我误解了你的回答
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2018-09-18
      相关资源
      最近更新 更多