【问题标题】:Can't get the right id into the Fragment无法将正确的 id 放入 Fragment
【发布时间】:2014-10-10 07:12:20
【问题描述】:

我需要通过行单击ex传输从JSON实体解析的id值。(列表视图中的第一项的id为861(从JSON获取)第二个823,我需要将正确的id传输到片段B

这就是我获取 id 的方式:

List<NameValuePair> param = new ArrayList<NameValuePair>();
 JSONObject json = jsonParser.makeHttpRequest(URL_MESSAGES, "GET", param, token);
 JSONObject data = json.getJSONObject("data");
 JSONArray messages = data.getJSONArray("messages");
for(int i=0;i<messages.length();i++){
JSONObject c = messages.getJSONObject(i);
read_status=c.getString(TAG_READ_STATUS);
if(read_status.equals("unread")){
msgID=c.getInt("id");
Log.d("BUNDLE ID", String.valueOf(msgID));
title = c.getString(TAG_TITLE);
Log.d("TITLE",title);
time=c.getString(TAG_TIME);
HashMap<String, String> map = new HashMap<String, String>();
map.put(TAG_TITLE, title);
map.put(TAG_TIME, time);

mailList.add(map);

这是我将 id 转移到片段中的方式

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
FragmentManager fm=getFragmentManager();
FragmentTransaction transaction=fm.beginTransaction();
bundle.putInt("message", msgID );
MessageView ViewMessages=new MessageView();
ViewMessages.setArguments(bundle);
transaction.replace(R.id.fragmentInnerMail,ViewMessages);
transaction.commit();
}

当用户点击行中的项目时,只有最后一个id(通过asyncTask解析)进入fragmentB,而不是基于listview中的行的id,我无法弄清楚。

适配器

  @Override
        protected void onPostExecute(String s) {
            ListView list = (ListView) getActivity().findViewById(R.id.list);
            ListAdapter adapter = new SimpleAdapter(
                    getActivity(), mailList,
                    R.layout.mail_row, new String[] { TAG_TITLE,
                    TAG_TIME}, new int[] {
                    R.id.mTitle,R.id.mDate});

            list.setAdapter(adapter);


            pDialog.dismiss();

        }

【问题讨论】:

  • 您是否使用SimpleAdapter 和mailList 作为数据集?
  • 是的,我发布了适配器

标签: android json onitemclicklistener onitemclick


【解决方案1】:

您需要将 id 添加到您的 HashMap 中

map.put(TAG_ID, msgID);

onItemClick你可以通过这种方式获得你按下的项目:

HashMap<String, String> itemAtPostion =  parent.getItemAtPosition(position);

然后

   bundle.putInt("message", itemAtPostion.get(TAG_ID) ); 

【讨论】:

  • 第二行出现错误,'Object cannot be convert to HashMap'
猜你喜欢
  • 2015-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多