Android listView中点击item或Item中控件跳转对应的详情页面的实现(商品详情查看)

应用场景

开发中,特别是电商客户端,用ListView展示商品列表,点击Item 或是Item中的控件会跳转到对应的商品详情,本文主要讲Intent传递数据,实现简单的商品详情展示,实际的开发中是采用传递商品的Id然后在界面加载对应的Json数据并且显示,原理一致。页面效果图如下:

这是商品列表
这里写图片描述
这是商品详情
这里写图片描述

本文是在适配器里给Button或是其他控件设置点击事件在getView中只复用了ChildView的布局,这样做是解决滑动时候ListViewPosition位置错乱的问题,注意:final int position,final FrameLayout fl = (FrameLayout) convertView.findViewById(R.id.fl);这样可以实现Item控件的点击事件比较友好。就是在开启Activity的时候通过Intent传递需要的参数给Activity。

@Override
        public View getView(final int position, View convertView, ViewGroup parent) {

            ViewHolder holder = null;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.item_produces, null);//填充布局
                }else {
                holder = (ViewHolder) convertView.getTag();
            }
holder = new ViewHolder();
holder.iv_produce = (ImageView) convertView.findViewById(R.id.iv_produce);
holder.tv_pro_all = (TextView) convertView.findViewById(R.id.tv_pro_all);

点击事件
final FrameLayout fl = (FrameLayout) convertView.findViewById(R.id.fl);
            fl.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    //需要Intent传递参数
                    Intent produceinfo = new Intent(getActivity(), JuJiangProduceInfoActivity.class);
                    Bundle b = new Bundle();
                    b.putInt("position", (Integer)position);
                    b.putInt("img", (Integer) mData.get(position)
                            .get("img"));
                    b.putString("name",
                            (String) mData.get(position).get("info"));
                    produceinfo.putExtras(b);
                    startActivity(produceinfo);


                }
            });

进入商品详情代码分析

通过Bundle添加数据,由于Bundle啥数据都能存,这个比较友好,直接将数据装进bundle 然后扔给intent传递即可。

Bundle b = new Bundle();
b.putInt("position", (Integer)position);
b.putInt("img", (Integer) mData.get(position)
                            .get("img"));
扔给Intent数据
Intent produceinfo = new Intent(getActivity(), xxxActivity.class);
produceinfo.putExtras(b);——>这里才是扔进去了
startActivity(produceinfo);

在xxxActivity中只要获得Intent传递过来的数据设置在对应的控件上即可。(实际开发中只传递商品的Id即可,通过id获得Json,填充数据)代码如下

//得到传递过来的intent参数
        Bundle b = getIntent().getExtras();
        String name = b.getString("name");//商品名
        int ing = b.getInt("img");//图片
        --->以下设置数据给对应的控件即可。
        iv_pd_info.setBackgroundResource(ing);
        tv_pro_name.setText(name);

总结

当我们初次接触ListView这种跳转到相同界面,但是数据不一样,我们通常采用数据获取通过Position获取对应位置的数据,通过Intent传递对应position 的数据给对应的页面,这样Android“详情”页面就完成了。

  • 12
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我理解了你的问题。在Android Studio实现点击ListView的某个Item修改对应点击Item的数据可以按照以下步骤进行: 第一步:定义ListView和SimpleAdapter 在XML布局文件定义ListView和SimpleAdapter,如下所示: ``` <ListView android:id="@+id/listView" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` ``` private List<Map<String, String>> mDataList; private SimpleAdapter mAdapter; mDataList = new ArrayList<Map<String, String>>(); mAdapter = new SimpleAdapter(this, mDataList, android.R.layout.simple_list_item_1, new String[]{"title"}, new int[]{android.R.id.text1}); listView.setAdapter(mAdapter); ``` 第二步:监听ListView Item点击事件ListView上添加OnItemClickListener监听器,当用户点击List任意项时会触发该监听器,如下所示: ``` listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO: 处理ListView Item点击事件 } }); ``` 第三步:修改ListView Item的数据 在监听器获取用户点击Item对应的数据,修改它的值,再通知适配器数据已经改变,如下所示: ``` Map<String, String> item = (Map<String, String>) mAdapter.getItem(position); item.put("title", "New Title"); mAdapter.notifyDataSetChanged(); ``` 以上就是实现点击ListView某个Item修改对应点击Item数据的全部步骤。希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值