ListView实现的商城列表页面

Android毕设项目功能:商城列表与购物车展示(一) 最近应公司要求,到某大学进行毕设项目实训讲解,今天在课上讲解内容主要围绕在商城功能展开,因为没有服务器提供后台数据,所以使用虚拟数据,在代码中创建集合的用于展示。基本逻辑与后台服务提供数据的逻辑也相似。毕设中有需要相同功能的同学可以借鉴一下,以下的逻辑思路与实现代码。 代码实现效果图如下: 需求分析: 展示效果为四个界面,界面间都是通过前一个点击相关内容,跳转显示,故在此功能中应该需... 阅读详情

一、页面展示

页面展示

二、profile_browse_activity.xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <!-- statr -->

    <include
        android:id="@+id/goodsgroupbuy_navbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        layout="@layout/top_view" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="match_parent" >

            <ListView
                android:id="@+id/quality_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginLeft="5dp"
                 />

            <FrameLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="bottom|right"
                android:layout_marginBottom="30dp"
                android:layout_marginRight="10dp" >

                <ImageView
                    android:id="@+id/good_detail_up"
                    android:layout_width="45dp"
                    android:layout_height="45dp"
                    android:background="@drawable/up_top_bg"
                    android:padding="12dp"
                    android:src="@drawable/up_top_icon" />
            </FrameLayout>
        </FrameLayout>
    </LinearLayout>
    <!-- end -->

</LinearLayout>

预览:

列表布局

三、top_view.xml头部布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="48dp" >

        <View
            android:layout_width="fill_parent"
            android:layout_height="20dp"
            android:background="#000000" />

        <ImageView
            android:layout_width="fill_parent"
            android:layout_height="48dp"
            android:background="@color/white" />

        <ImageView
            android:id="@+id/top_view_back"
            android:layout_width="45dp"
            android:layout_height="45dp"
            android:layout_gravity="center_vertical"
            android:layout_marginLeft="4dp"
            android:padding="10dp"
            android:src="@drawable/arrowleftcolor" />

        <TextView
            android:id="@+id/top_view_left"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:paddingLeft="15dp"
            android:paddingRight="5dp"
            android:text=""
            android:textColor="#ffffff"
            android:textSize="15sp"
            android:visibility="gone" />

        <TextView
            android:id="@+id/top_view_text"
            android:layout_width="230dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:ellipsize="end"
            android:gravity="center"
            android:singleLine="true"
            android:textColor="#85C226"
            android:textSize="18sp" />

        <ImageView
            android:id="@+id/top_right_button_iv"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_gravity="center_vertical|right"
            android:layout_marginRight="4dp"
            android:src="@drawable/home"
            android:visibility="gone" />

        <TextView
            android:id="@+id/top_right_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|right"
            android:layout_marginRight="4dp"
            android:gravity="center"
            android:padding="10dp"
            android:text="@string/topview_message"
            android:textColor="#FFFFFF"
            android:textSize="15sp"
            android:visibility="gone" />
    </FrameLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#e4e4e4" >
    </LinearLayout>

</LinearLayout>

四、list_no_more.xml布局代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clickable="false"
       android:background="#f7f7f7"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/packet_list_nomore"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center"
        android:padding="10dp"
           android:background="#f7f7f7"
        android:text="亲,没有更多了"
        android:textColor="@color/filter_text_color"
        android:textSize="12dp" />

</LinearLayout>

五、Profile_Browse_Activity代码:

public class Profile_Browse_Activity extends BaseActivity {
    private TextView title;
    private ImageView back;
    private ImageView home;
    private ListView browseListView;
    BrowseListAdapter qualityListAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_browse_activity);

        title = (TextView) findViewById(R.id.top_view_text);
        title.setText("浏览记录");

        home = (ImageView) findViewById(R.id.top_right_button_iv);
        home.setVisibility(View.VISIBLE);
        home.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();

            }
        });
        back = (ImageView) findViewById(R.id.top_view_back);
        back.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
        browseListView = (ListView) findViewById(R.id.quality_list);
        View footview = LayoutInflater.from(this).inflate(
                R.layout.list_no_more, null);

        browseListView.addFooterView(footview);
        ImageView good_detail_up = (ImageView)           findViewById(R.id.good_detail_up);
        good_detail_up.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                if (browseListView != null) {
                    browseListView.setSelection(0);
                }
            }
        });
        qualityListAdapter = new BrowseListAdapter(this);
        browseListView.setAdapter(qualityListAdapter);
    }

    private class BrowseListAdapter extends BaseAdapter {
        private Context mContext;

        public BrowseListAdapter(Context context) {
            this.mContext = context;
        }
        public int getCount() {
                return texts.length;
        }

        public Object getItem(int position) {
            return null;
        }

        public long getItemId(int position) {
            return position;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            // 优化ListView
            ItemViewCache viewCache;
            if (convertView == null) {
                convertView = LayoutInflater.from(mContext).inflate(
                        R.layout.profile_browse_list_item, null);
                viewCache = new ItemViewCache();
                viewCache.mTextView = (TextView) convertView
                        .findViewById(R.id.quality_name);
                viewCache.mPriceView = (TextView) convertView
                        .findViewById(R.id.quality_price);
                viewCache.mPhotoView = (ImageView) convertView
                        .findViewById(R.id.quality_photo);
                viewCache.mPrice2View = (TextView) convertView
                        .findViewById(R.id.quality_price_original);
                viewCache.mPrice2View.getPaint().setAntiAlias(true);
                viewCache.mPrice2View.getPaint().setFlags(
                        Paint.STRIKE_THRU_TEXT_FLAG);

                viewCache.mTextView.setText(texts[position]);
                viewCache.mPriceView.setText(texts1[position]);
                viewCache.mPhotoView.setImageResource(photo[position]);
                convertView.setTag(viewCache);
            } else {
                viewCache = (ItemViewCache) convertView.getTag();
            }

            return convertView;
        }
    }

    private static class ItemViewCache {
        public TextView mTextView;
        public TextView mPriceView;
        public ImageView mPhotoView;
        public TextView mPrice2View;

    }

    // 展示的文字
    private String[] texts = new String[] { "澳大利亚进口牛奶 德运全脂纯牛奶1L*10盒装整箱 澳洲鲜牛奶",
            "澳洲进口牛肉 家庭牛排组合套餐 肉眼牛仔骨西冷", "科尔沁黑椒菲力牛排(家庭装)300G", "越南红芒果700G",
            "筒骨500G", "乌鸡 3.2-3.5斤/只", "【良品铺子】芒果干 菲律宾水果干特产蜜饯果脯零食108g*3袋",
            "手撕牛肉条特产零食美味正宗138g多种口味" };
    private String[] texts1 = new String[] { "¥38.00", "¥24.00", "¥24.00",
            "¥24.00", "¥24.00", "¥24.00", "¥24.00", "¥24.00" };
    private int[] photo = new int[] { R.drawable.browse_photo1,
            R.drawable.browse_photo2, R.drawable.browse_photo3,
            R.drawable.browse_photo4, R.drawable.browse_photo5,
            R.drawable.browse_photo6, R.drawable.browse_photo7,
            R.drawable.browse_photo8 };

    @Override
    public void finish() {
        // TODO Auto-generated method stub
        super.finish();
    }

}

六、图片资源:

这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

UGUI 自定义滚动选择列表 ListView 列表在游戏的UI中是非常常见的,例如选服页面,商城页面,奖励页面等等都会有列表的存在。文中我们将这些列表称为ListView(类似于fgui的GList),而列表中的每项称作Item。 首先我们来分析下,我们的ListView需要实现哪些功能,以及如何实现 功能 解决思路 可以通过滑动来显示ListView中的Item 可以使用UGUI的ScrollView(ScrollRect)来实现,Item放在Content当中 ListView中的Item可以是单选或者多选 UGUI的 阅读详情

相关推荐

Android控件之ListView应用

Android移动应用基础教程,Android控件之ListView应用

qq_60600802的博客 1899

HarmonyOS网格布局:List组件和Grid组件的使用

在我们常用的手机应用中,经常会见到一些数据列表,如设置页面、通讯录、商品列表等。下图中两个页面都包含列表,“首页”页面中包含两个网格布局,“商城”页面中包含一个商品列表。上图中的列表中都包含一系列相同宽度的列表项,连续、多行呈现同类数据,例如图片和文本。常见的列表有线性列表(List列表)和网格布局(Grid列表):为了帮助开发者构建包含列表的应用,ArkUI提供了List组件和Grid组件,开发者使用List和Grid组件能够很轻松的完成一些列表页面。

1 1939

android开发商城首页listview实现

就是跟淘宝商城或者京东等客户端首页那种效果 可以下拉刷新和上拉加载 可以添加头部 比如viewpage实现广告轮播

Android Studio初学者实例:ListView学习--购物商城

ListView的适配器使用内部类的方式写在了Activity的代码中,显然List的item包含了两个TextView以及一个ImageView,分别用来显示商品名价格与图片。此实践案例由课堂上学习ListView控件提供。先上效果图,使用Listview控件实现一个简单的购物商城界面。显然,界面由Textview与ListView构成,看一下XML代码。LinearLayout布局,看一下Activity的Java代码。其余的详细讲解在后续进行补充。

林大大的博客 5131

网络可视化工具netron详细安装流程

netron安装目录1.netron 简介2.不同操作系统下的安装使用方式2.1 在线版本:只要有浏览器就可以2.2 不同操作系统安装使用3.netron支持的网络框架4.netron测试演示 1.netron 简介 在实际的项目中,经过会遇到各种网络模型,需要我们快速去了解网络结构。如果单纯的去看模型文件,脑海中很难直观的浮现网络的架构。 这时,就可以使用netron可视化工具,可以清晰的看到每一层的输入输出,网络总体的架构,而且支持各种不同网络框架,简单好用。 2.不同操作系统下的安装使用方式 2.1

江南研习社 12万+

西门子SCL出栈入栈算法(附带源码)

栈是一种数据结构,它的特点是数据后入先出(Last In First Out,LIFO)或者说是先入后出,意思是一样的。栈有三个基本动作:初始化、入栈和出栈。接下来给大家介绍下我使用SCL语言编写的栈函数,它以不定长数组作为存储区,以实数作为数据类型,实现了栈的初始化、入栈和出栈的操作。

CHUXUEZHE8210的博客 2335

简单商品展示案例(ListView)

今天做的是商品展示界面,先上一张运行效果图: 额,这是要求做到的,下面才是实际的 。 接下来是代码。界面代码: activity_main.xml:<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

lm121380的博客 1594

Arm Neoverse CMN-700 QoS与PrefetchTarget架构解析

在现代多核处理器系统中,内存访问性能优化是提升整体效能的关键。QoS(服务质量)技术通过优先级调控机制,确保关键任务获得更高的缓存带宽和内存访问权限。PrefetchTarget作为预取技术的一种实现,能够显著降低内存访问延迟,特别适用于AI训练和数据库系统等高性能计算场景。Arm Neoverse CMN-700通过RN SAM模块实现了硬件级的地址范围检测和优先级调控,支持最多8个独立内存区域的QoS配置。测试数据显示,合理配置QoS可使关键任务延迟降低40%,而PrefetchTarget技术则能减少

weixin_36197669的博客 316

商品展示

要求: 开发一个购物车,需要将购物车中的商品以列表的形式展示,并且还需要对购物车中的 商品进行增删改查操作。要实现这些功能就需要使用 ListView 和 SQLite 数据库。 通过代码实现,得到以下效果图 : 创建程序 (1).“商品展示”程序对应的布局文件(activity_main.xml)如下所示:<?xml version="1.0" encoding="utf-8"?> <

Sunshine_1234的博客 401

计组实验之四路表决器

请在之前四路表决器电路实现的基础上,继续用连接线 联接CD4511,将投票为1的票数总和显示到一个 LED上,思考如何做?由于我们需要通过显示字形来直接看出有几个1,在这里,我们最多有四个1,即显示字形最多到4就行,所以我们需要将有几个1用2进制数来表示,下面给出了相关电路图。显示输入插口,按真值表(自拟)要求,逐次改变输入变量, 测量相应的输出值,验证逻辑功能, 与表3-1 进行比较, 验证所设计的逻辑电路是否符合要求。用实验结果与真值表3-1和3-2进行比对,可以得出,我们实验结果是正确的。

szyugly的博客 1万+

别再只看K线了!用Python自制筹码分布图,可视化Winner函数帮你判断支撑压力

本文详细介绍了如何用Python自制筹码分布图,通过数据清洗、算法实现和动态可视化,帮助投资者更准确地判断股票支撑压力位。文章重点讲解了Winner函数的应用,结合筹码分布与交易策略,提升交易决策的精准度。

weixin_42520796的博客 316

Vue2音乐播放器分析

App.vue和常规一样只包含#app标签,再加上渲染命令router-view,但是这里增加了底部导航栏 NavBottomView, css格式文件为index.css。需要注意的是启用了watch属性来坚挺路由的变化,并通过路由变化来设置底部导航栏是否显示。watch: { $route(to,from){ if(to.path.indexOf('detail')...

callmepls1的博客 697

Python 爬虫实战:抓取悦动圈跑步爱好者运动轨迹数据,规划健身路线

通过本次 Python 爬虫实战,我们学习了如何使用 Python 抓取悦动圈跑步爱好者的运动轨迹数据,并基于这些数据进行分析和处理,最终规划出健身路线。在这个过程中,我们掌握了requests、BeautifulSoup、pandas和matplotlib等库的基本使用方法,了解了爬虫的基本原理和流程。希望本文能够帮助你更好地理解和应用 Python 爬虫技术,在数据处理和分析领域取得更多的成果。

u014481728的博客 2370

Android Studio实现简单的购物商城界面

随着网络的发展、手机等电子产品的普及和电商的崛起,人们越来越倾向于足不出户的网上购物,网购已经成为一种趋势,在我们的日常消费模式当中已经占据了很大一部分,几乎生活当中能见到的东西在购物平台上都可以买到。那么这些购物平台是如何显示这些商品列表的呢?当我们去浏览商品列表时这些信息是怎么添加上去的呢?带着这些疑问,本次项目就带大家来学习ListView的使用。项目结构也很简单,因为这是应用列表的最简单的实例,只有一个Activity文件和两个layout文件。

振华OPPO的博客世界 7万+

机器学习扩散模型简介

​ 扩散模型是生成模型,在过去几年中越来越受欢迎,这是有充分理由的。仅在 2020 年代发布的几篇开创性论文就向世界展示了 Diffusion 模型的能力,例如在图像合成方面击败 GAN[6]。最近,从业者将看到DALL-E 2(OpenAI 上个月发布的图像生成模型)中使用的扩散模型。

gongdiwudu的专栏 4273

Access查询中的Dlookup函数的妙用

在Microsoft Access中,处理和分析数据的过程中,常常会遇到需要根据条件从其他记录中提取特定数据的情况。这时候,Dlookup函数就成了开发者和数据分析师的得力助手。今天我们将通过一个具体的实例,详细探讨如何利用Dlookup函数来解决复杂的查询问题。

m0_62153576的博客 296

ListView控件商城列表

利用适配器SimpleAdapter创建列表: SimpleAdapter(Context context,List<? extends Map<String,?>> data,int resource,String[] form,int[] to) 方法中的5个参数的含义: context:上下问对象 MainActivity.this data:数据集合 data中每一项对应ListView控件中条目的数据 lists resource:Item布局资源的id R....

dengfengling999的博客 2085

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Android分类列表之ListView-ViewType实现

Android分类列表-ListView实现一、分析实现 前两天无意间看到朋友的一个功能要实现分类列表,也就互相简单的聊了一下,在此感觉还是挺有意思就想着用三种稍微不同的方式来实现,下面是UI效果图 一、分析实现 如果说用最简单直接的方法有的小伙伴肯定想到了ExpandableListView,但是如果给我们的数据是混乱的全部揉杂一起了那么我们就需要话费一些时间和操作来进行对数据的处理,对...

qq_33225399的博客 1765

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Flutter&OpenHarmony商城App订单列表组件开发

本文介绍了Flutter和OpenHarmony平台下订单列表组件的开发实现。主要内容包括:1) 订单数据模型定义,使用枚举类型表示订单状态;2) 订单列表组件实现,支持分页加载功能;3) 订单卡片组件开发,包含订单编号、状态标签、商品列表和操作按钮等核心元素。文章详细讲解了各模块的设计思路和代码实现,重点展示了如何通过组件化方式构建清晰的订单界面,以及如何处理不同订单状态的差异化展示。该实现方案具有良好的可复用性和扩展性,适用于电商应用的订单管理场景。

2501_94444175的博客 1085

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

在线商城项目EShop【ListView、adapter】

要求如下:1、创建在线商城项目EShop;2、修改布局文件,使用LineaLayout和ListView创建商品列表UI;3、创建列表项布局list_item.xml,设计UI用于显示商品图标、名称和价格信息;4、创建GoodsAdapter类,用于显示列表中的数据;5、在MainActivity中编写模拟的商品数据,把ListView对象关联到GoodsAdapter,实现商品数据的显示;6、尝试使用SimpleAdapter和ArrayAdapter实现相同功能。

qq_22841387的博客 1082

Android控件listview ListView的用法

通常在自定义适配器时会继承BaseAdapter,该类拥有四个抽象方法,根据这几个抽象方法对ListView控件进行数据适配。获取相应position对应的条目视图,position是当前条目的位置,convertView用于复用旧视图,parent用于加载XML布局。接下来我们通过一个购物商城的案例来演示如何通过ListView控件与数据适配器显示一个商品信息的列表。,它类似于一个转换器,将复杂的数据转换成用户可以接受的方式进行呈现。ListView的样式是由属性决定的,它的常用属性如下所示。

qq_64628470的博客 2676

Android ListView嵌套ListView的实现方式

首先刚到北京一个月,产品经理让做一个类似于商城的东东,起初感觉没什么难度,(不就一个电子商务app嘛,以前也做过啊),但是当看到有需求是这样的 然后就开始做,起初太懒了,就在网上找,找到了一个ListView嵌套ListView的一哥们的讲解的大致思路的,然后根据那哥们的思路自己写了一个demo,感觉效果还挺好,不卡, 第一种实现方式:这种方式有

阳光灿烂的日子的博客 1万+

android购物城市,Android实现购物商城

本文实例为大家分享了Android实现购物商城的具体代码,供大家参考,具体内容如下activity_main.xmlandroid:id="@+id/lv"android:layout_width="match_parent"android:layout_height="wrap_content"android:listSelector="#B5DCFA">listview2.xmlandr...

weixin_39994806的博客 1988

ListView练习_购物商城

ps:用的时候记者改包名,要不然跑不了,对着红色的包名按下。(如果你用的是android studio)即可。

没得简介 2749

ListView使用总结

ListView使用总结虽然随着RecyclerView的不断普及,相应的资源也越来越多,许多的项目都在使用RecyclerView,但作为他的前辈ListView,加深对ListView的使用有助于我们更好的适应到RecyclerView的使用中。首先看一下我们实现的效果一些简单效果这只是前面的一些简单效果,后面会有一些进阶的效果,希望能耐心的看下去。ListView的优化ListView的优化主

茅屋 1万+
上一篇: 软件工程实训——点歌管理系统开发记录
下一篇: 自定义dialog布局
kernel_
博客等级 码龄12年 8粉丝 50原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值