【问题标题】:Get the exact posotion of a listview item when selected选择时获取列表视图项的确切位置
【发布时间】:2015-04-06 21:58:28
【问题描述】:

需要在我的代码中进行一些更正,我正在尝试使用意图将三个字符串从列表项传递到下一个活动。一切正常,但问题是我不知道如何获取列表项的确切位置,因此我只能选择该列表项的内容并将它们带到我的其他活动中。

ActivityOne.java

int ctryId;
    mCommentList = new ArrayList<HashMap<String, String>>();

    try {

        mComments = json.getJSONArray(TAG_POSTS);

        for (int i=mComments.length() - 1; i>=0; i--) {
            JSONObject c = mComments.getJSONObject(i);

            ctryId = c.getInt(TAG_COUNTRY_ID);
            if (ctryId == 2){

                ListItem item = new ListItem();

                item.setRegionId(c.getString(TAG_REGION_ID));
                item.setRegionName(c.getString(TAG_REGION_NAME));
                item.setCountryId(c.getString(TAG_COUNTRY_ID));

                listItems.add(item);
            }

            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

                    Intent intent = new Intent(RegionsOfVisit.this, LocationsActivity.class);
                    intent.putExtra("Regions_of_visit_region_id", item.getRegionId());
                    intent.putExtra("Regions_of_visit_region_name", item.getRegionName());
                    intent.putExtra("Regions_of_visit_country_id", item.getCountryId());
                    startActivity(intent);

                }
            });

        }

        // notify data changes to list adapater
        regionsOfVisitListAdapter.notifyDataSetChanged();

任何建议都将受到高度赞赏

【问题讨论】:

  • item.getRegionId()。在这里可以访问吗?你能编译这行没有错误吗?
  • Amsheer,我可以编译没有错误

标签: android


【解决方案1】:

这里有一个变化:

Intent intent = new Intent(RegionsOfVisit.this, LocationsActivity.class);
                    intent.putExtra("Regions_of_visit_region_id", item.get(position).getRegionId());
                    intent.putExtra("Regions_of_visit_region_name", item.get(position).getRegionName());
                    intent.putExtra("Regions_of_visit_country_id", item.get(position).getCountryId());
                    startActivity(intent);

另一个改变是把它设为全局

  ListItem item = new ListItem();

【讨论】:

  • 我不能使用 get() 因为它不在我的 ListItem 类中
【解决方案2】:

我不确定你的编码结构,但下面的 sn-p 可能会对你有所帮助。

假设您的列表视图由 ListItem 对象的项组成,并且 Adapter 采用 ListItem 对象的列表。

那么你的 onitemclicklistener 可能会像下面给出的那样工作:

ArrayList<ListItem> list;
//fill your list with data
ListAdapter mAdapter = new ListAdapter(context,list);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {

ListItem item = ListItem item = list.get(position);
                    Intent intent = new Intent(RegionsOfVisit.this, LocationsActivity.class);
                    intent.putExtra("Regions_of_visit_region_id", item.getRegionId());
                    intent.putExtra("Regions_of_visit_region_name", item.getRegionName());
                    intent.putExtra("Regions_of_visit_country_id", item.getCountryId());
                    startActivity(intent);

                }
            });

希望这会有所帮助...

【讨论】:

    猜你喜欢
    • 2018-02-21
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多