Android手机通讯录制作

Android手机通讯录制作

  • 要求
    • 样图展示
    • 代码
      • 1.创建数据库
      • 2.主界面
        • MainActivity
        • CustomAdapter.java
        • activity_main.xml
      • 3.添加联系人
        • AddContacts.java(添加界面)
        • addactivity.xml

要求

设计一个基于Android的手机通讯录,此通讯录包括添加、搜索、修改、删除联系人的功能。

  1. 添加、编辑、删除功能
    点击通讯录主界面选项菜单中的“添加联系人”菜单项,进入添加联系人界面,输入联系人的基本信息,包括姓名、手机号码、家庭地址、单位名称、Email、QQ号这些信息,姓名和手机号码必须不为空,且唯一。点击通讯录中一个已存在的联系人,进入编辑界面,可修改联系人的资料或进行删除操作,完成后返回到主界面。
  2. 查找联系人
    点击通讯录选项菜单中的“查找联系人”菜单项,进入搜索界面,能通过姓名、手机号码、单位名称等信息查找联系人,将所有符合查询条件的联系人通过列表控件显示。
  3. 快捷菜单功能
    在联系人主界面上长按一个已存在的联系人,能弹出一个快捷菜单,菜单项包括拨打电话、发送短信、修改联系人、删除联系人。点击菜单项能跳转到相应的界面。

样图展示

Alt

代码

1.创建数据库

/*** 创建一个数据库类继承* 通过创建子类MyDatabaseHelper继承SQLiteOpenHelper类,实现它的一些方法来对数据库进行操作。* 变量用常量表示规范,常量一般大写*/
public class MyDatabaseHelper extends SQLiteOpenHelper {private Context context;private static final String DATABASE_NAME = "phone_contacts.db";//定义一个常量名命这个数据库为phone db是一个扩展;private static final int DATABASE_VERSION = 1;//定义一个数据库版本,是一个整数类型;private static final String TABLE_NAME = "contact";//定义一个表名;//需要定义标题private static final String CONTACT_ID = "phone_id";//序列private static final String CONTACT_NAME = "phone_name";//名字private static final String CONTACT_PHONE = "phone_phone";//电话private static final String CONTACT_ADDRESS = "phone_address";//地址private static final String CONTACT_UNIT = "phone_unit";//单位名称private static final String CONTACT_EMAIL = "phone_email";//Emailprivate static final String CONTACT_QQ = "phone_qq";//QQ号码/*构造函数要传上下文和名字以及工厂还有一个版本,*/public MyDatabaseHelper(@Nullable Context context) {super(context, DATABASE_NAME, null, DATABASE_VERSION);this.context = context;}/*第一次创建数据库的时候使用回调方法数据出第一次创建的时候才会被调用,其他时候不会再调用了,只调用一次创建contact表id,name,phone,address,unit,,email,qq;*/@Overridepublic void onCreate(SQLiteDatabase db) {//创建数据表String query =" CREATE TABLE " + TABLE_NAME +" ( " + CONTACT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +CONTACT_NAME + " TEXT, " +CONTACT_PHONE + " TEXT, " +CONTACT_ADDRESS + " TEXT, " +CONTACT_UNIT + " TEXT, " +CONTACT_EMAIL + " TEXT, " +CONTACT_QQ + " TEXT); ";//执行SQLdb.execSQL(query);}## 如何插入一段漂亮的代码片去[博客设置](https://mp.csdn.net/console/configBlog)页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 `代码片`.
```javascript
// An highlighted block
var foo = 'bar';

2.主界面

MainActivity

public class MainActivity extends AppCompatActivity {private SearchView searchView;
/*
创建一个RecoverySystem对象和浮动操作按钮*/RecyclerView recyclerView;FloatingActionButton add_button;//初始化我的数据库类MyDatabaseHelper myDB = new MyDatabaseHelper(MainActivity.this);//创建6个不同的数组列表一边这些数组列表将包含字符串,因此第一个是//phone_id、phone_name、phone_phone、phone_address、phone_unit、phone_email、phone_qqArrayList<String> phone_id,phone_name,phone_phone,phone_address,phone_unit,phone_email,phone_qq;CustomAdapter customAdapter;CardView cardView;
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){super.onActivityResult(requestCode,resultCode,data);if (requestCode == 1){recreate();}}public void displayData(){Cursor cursor = myDB.readAllData();if (cursor.getCount() == 0){Toast.makeText(this, "没有数据可以显示", Toast.LENGTH_SHORT).show();}else{while (cursor.moveToNext()){phone_id.add(cursor.getString(0));phone_name.add(cursor.getString(1));phone_phone.add(cursor.getString(2));phone_address.add(cursor.getString(3));phone_unit.add(cursor.getString(4));phone_email.add(cursor.getString(5));phone_qq.add(cursor.getString(6));}}}}

CustomAdapter.java

创建适配器界面用于显示主页面数据

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {private Context context;Activity activity;EditText pt_name1, pt_phone1, pt_address1, pt_unit1, pt_email1, pt_qq1;private ArrayList phone_id, phone_name, phone_phone, phone_address,phone_unit, phone_email, phone_qq;CustomAdapter(Activity activity,Context context,ArrayList phone_id,ArrayList phone_name,ArrayList phone_phone,ArrayList phone_address,ArrayList phone_unit,ArrayList phone_email,ArrayList phone_qq) {this.activity = activity;this.context = context;this.phone_id = phone_id;this.phone_name = phone_name;this.phone_phone = phone_phone;this.phone_address = phone_address;this.phone_unit = phone_unit;this.phone_email = phone_email;this.phone_qq = phone_qq;}@Overridepublic int getItemCount() {return phone_id.size();}public class MyViewHolder extends RecyclerView.ViewHolder {TextView phone_id_txt, phone_name_txt, phone_phone_txt, phone_address_txt;LinearLayout mainLayout;public MyViewHolder(@NonNull View itemView) {super(itemView);phone_id_txt = itemView.findViewById(R.id.phone_id_txt);phone_name_txt = itemView.findViewById(R.id.phone_name_txt);phone_phone_txt = itemView.findViewById(R.id.phone_phone_txt);phone_address_txt = itemView.findViewById(R.id.phone_address_txt);pt_name1 = itemView.findViewById(R.id.pt_name1);pt_phone1 = itemView.findViewById(R.id.pt_phone1);pt_address1 = itemView.findViewById(R.id.pt_address1);pt_unit1 = itemView.findViewById(R.id.pt_unit1);pt_email1 = itemView.findViewById(R.id.pt_email1);pt_qq1 = itemView.findViewById(R.id.pt_qq1);mainLayout = itemView.findViewById(R.id.mainLayout);}}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/recyclerview"android:layout_width="414dp"android:layout_height="674dp"android:layout_marginTop="52dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.666"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><com.google.android.material.floatingactionbutton.FloatingActionButtonandroid:id="@+id/add_button"android:layout_width="57dp"android:layout_height="55dp"android:layout_marginEnd="44dp"android:layout_marginBottom="84dp"android:clickable="true"android:focusable="true"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:srcCompat="@drawable/ic_baseline_add_24" /><SearchViewandroid:id="@+id/searchview"android:layout_width="match_parent"android:layout_height="50dp"android:layout_marginTop="2dp"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

3.添加联系人

//创建一个添加方法addPhone()//将创建SQLite数据库对象,这样只需要名命该数据库,使用一个关键字,指向SQLite开放式帮助类//helper类,获取可写入的数据库public void addPhone(String name, String phone, String address, String unit, String email, String qq) {SQLiteDatabase db = this.getWritableDatabase();ContentValues cv = new ContentValues();cv.put(CONTACT_NAME, name);cv.put(CONTACT_PHONE, phone);cv.put(CONTACT_ADDRESS, address);cv.put(CONTACT_UNIT, unit);cv.put(CONTACT_EMAIL, email);cv.put(CONTACT_QQ, qq);long result = db.insert(TABLE_NAME, null, cv);if (result == -1) {Toast.makeText(context, "保存失败", Toast.LENGTH_SHORT).show();} else {Toast.makeText(context, "保存成功!", Toast.LENGTH_SHORT).show();}}

AddContacts.java(添加界面)

public class AddContacts extends AppCompatActivity {private EditText et_name,et_phone,et_address,et_unit,et_email,et_qq;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_add_contacts);init();button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {MyDatabaseHelper myDB = new MyDatabaseHelper(AddContacts.this);myDB.addPhone(et_name.getText().toString().trim(),et_phone.getText().toString().trim(),et_address.getText().toString().trim(),et_unit.getText().toString().trim(),et_email.getText().toString().trim(),et_qq.getText().toString().trim());}});}private void init(){et_name = findViewById(R.id.pt_name);et_phone = findViewById(R.id.pt_phone);et_address = findViewById(R.id.pt_address);et_unit = findViewById(R.id.pt_unit);et_email = findViewById(R.id.pt_email);et_qq = findViewById(R.id.pt_qq);button = findViewById(R.id.button);}
}

addactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".AddContacts"><EditTextandroid:id="@+id/pt_name"android:layout_width="250dp"android:layout_height="40dp"android:layout_marginTop="150dp"android:ems="10"android:hint="请输入姓名"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.683"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><EditTextandroid:id="@+id/pt_phone"android:layout_width="250dp"android:layout_height="40dp"android:layout_marginTop="30dp"android:ems="10"android:inputType="textPersonName"android:hint="请输入电话号码"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.689"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/pt_name" /><EditTextandroid:id="@+id/pt_address"android:layout_width="250dp"android:layout_height="40dp"android:layout_marginTop="30dp"android:ems="10"android:hint="请输入家庭地址"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.689"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/pt_phone" /><EditTextandroid:id="@+id/pt_unit"android:layout_width="250dp"android:layout_height="40dp"android:layout_marginTop="30dp"android:ems="10"android:hint="请输入单位名称"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.683"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/pt_address" /><EditTextandroid:id="@+id/pt_email"android:layout_width="250dp"android:layout_height="40dp"android:layout_marginTop="30dp"android:ems="10"android:hint="请输入Email"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.683"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/pt_unit" /><EditTextandroid:id="@+id/pt_qq"android:layout_width="250dp"android:layout_height="40dp"android:layout_marginTop="30dp"android:ems="10"android:hint="请输入QQ号码"android:inputType="textPersonName"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.683"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/pt_email" /><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_marginStart="16dp"android:layout_marginTop="150dp"android:layout_marginEnd="15dp"android:gravity="center"android:text="@string/tv_name"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/pt_name"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent" /><TextViewandroid:id="@+id/textView2"android:layout_width="wrap_content"android:layout_height="40dp"android:gravity="center"android:layout_marginStart="16dp"android:layout_marginTop="30dp"android:layout_marginEnd="15dp"android:text="@string/tv_phone"android:textAlignment="center"android:textDirection="locale"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/pt_phone"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView" /><TextViewandroid:id="@+id/textView3"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_marginStart="16dp"android:gravity="center"android:layout_marginTop="30dp"android:layout_marginEnd="15dp"android:text="@string/tv_address"android:textAlignment="center"android:textDirection="locale"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/pt_address"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView2" /><TextViewandroid:id="@+id/textView4"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_marginStart="16dp"android:layout_marginTop="30dp"android:gravity="center"android:layout_marginEnd="15dp"android:text="@string/tv_unit"android:textAlignment="center"android:textDirection="locale"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/pt_unit"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView3" /><TextViewandroid:id="@+id/textView5"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_marginStart="16dp"android:layout_marginTop="30dp"android:layout_marginEnd="15dp"android:gravity="center"android:text="@string/tv_email"android:textAlignment="center"android:textDirection="locale"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/pt_email"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView4" /><TextViewandroid:id="@+id/textView6"android:layout_width="wrap_content"android:layout_height="40dp"android:layout_marginStart="16dp"android:layout_marginTop="30dp"android:layout_marginEnd="15dp"android:gravity="center"android:text="@string/tv_QQ"android:textAlignment="center"android:textDirection="locale"android:textStyle="bold"app:layout_constraintEnd_toStartOf="@+id/pt_qq"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toBottomOf="@+id/textView5" /><Buttonandroid:id="@+id/button"android:layout_width="400dp"android:layout_height="wrap_content"android:layout_marginBottom="56dp"android:text="@string/btn_button"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.454"app:layout_constraintStart_toStartOf="parent" /><ImageViewandroid:id="@+id/imageView3"android:layout_width="360dp"android:layout_height="142dp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintHorizontal_bias="0.509"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"app:srcCompat="@drawable/qq1" />
</androidx.constraintlayout.widget.ConstraintLayout>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64086.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓APP源码和设计报告——个人通讯录

摘 要 随着移动设备制造技术和移动通信网络的迅猛发展,全球手机用户日益增加,手机成为了很多人日常生活中必不可少的一部分,手机业在日益发展的同时,人们对手机的功能需求和体验需求也越来越高,因此各种智能手机相继而出&#xff0c;当前市场上最流行的智能手机的操作系统非An…

【视觉基础篇】12 # 如何使用滤镜函数实现美颜效果?

说明 【跟月影学可视化】学习笔记。 如何理解像素化&#xff1f; 像素化 所谓像素化&#xff0c;就是把一个图像看成是由一组像素点组合而成的。每个像素点负责描述图像上的一个点&#xff0c;并且带有这个点的基本绘图信息。 像素点是怎么存储的&#xff1f; Canvas2D 以…

C++ / Opencv 简单实现美颜效果(瘦脸、大眼、磨皮等)

最近项目需要用到美颜的一些效果&#xff0c;因此开始接触opencv 计算机视觉库,在腾讯课堂上找到一个简单且免费的入门视频《Opencv4 快速入门视频30讲》&#xff0c;看完视频后&#xff0c;初步才对opencv 有一个比较清晰的概念和基本用法。 接下来就是开始对美颜的一些初步接…

Ps人像磨皮皮肤美白插件哪个好_安装教程

今天这个PS插件挺好用的&#xff0c;我们可以用它快速给人像照片磨皮、皮肤美白、上妆等功能&#xff0c;还是非常方便我们后期修图的&#xff0c;有需要这个插件的可以至陌鱼社区瞧一下。插件支持:Adobe PhotoshopCC2015 - CC2018,这里我们用Adobe PhotoshopCC2018做为演示&am…

对皮肤美白算法的一些研究

本篇博文来自博主Imageshop&#xff0c;打赏或想要查阅更多内容可以移步至Imageshop。 转载自&#xff1a;https://www.cnblogs.com/Imageshop/p/3843635.html 侵删 皮肤美白是现在任何一款流行的美颜软件必备的功能之一&#xff0c;不过你如果在互联网上搜索关于美白算法&a…

Portraiture4.0最新PS专属修图磨皮美白插件

作为PS的插件&#xff0c;被众多照片后期高手使用&#xff0c;评价颇高。主要原因在于它操作简便、磨皮效果好、软件很小&#xff0c;特别是它可以自动感应皮肤区域磨皮&#xff0c;只对皮肤作用更令人称奇的是&#xff1a;Portraiture 磨皮能保留下细小的毛孔和皮肤质感&#…

photoshop ps 美白 去污 磨皮 方法

目录 1.美白 2.去污 3.磨皮 1.美白 使用PS打开照片&#xff0c;然后复制一个图层。 复制的快捷方式就是 CTRLJ 复制的图层&#xff0c;把混合模式选择在“滤色”&#xff0c;然后调整旁边的透明度。 这个过程其实是把照片调亮。 完成之后&#xff0c;合并图层。合并图层的…

图像滤镜艺术---人脸编辑(五官微调+瘦脸美型)

写本文的目的&#xff0c;实际上是对目前人脸美型这一块技术做个总结&#xff0c;跟大家 分享一下&#xff01; 目前提到美颜算法&#xff0c;大家都会想到磨皮美白 /大眼瘦脸&#xff0c;实际上做好 美颜这件事情&#xff0c;关乎的不仅仅是这些&#xff0c;还有五官的协调比…

ps美白磨皮处理第三方插件portraiture

ps的功能这么强大&#xff0c;其美白磨皮方法当然不止一种。本文就给大家细数一下ps美白磨皮常用的几种方法。在各种方法中&#xff0c;插件法的操作更为简单&#xff0c;效果也更好&#xff0c;因此我们还会介绍ps磨皮美白插件哪个好。事不宜迟&#xff0c;一起来看看吧。 一…

初中英语知识水平测试软件,初中英语学科知识与能力模拟测试一

一、单项选择题(本大题共30小题,每小题2分,共60分) 在每小题列出的四个备选项中选择一个最佳答案,错选、多选或未选均无分。 *1. Which of the following doesnt contain liaison&#xff1f; A. Put it on, please B. Not at all C. Please pick it up D. Great minds…

轻松完成公司数据分析、业务数据探查的秘诀

2022年即将结束&#xff0c;您企业经营目标达成情况如何&#xff1f;是否可以快速对企业进行数据体检分析&#xff1f;天通眼带您快速了解企业各个维度的经营状况。 PART 01 年度计划检视 2022年还剩余1个月&#xff0c;您企业年度目标达成情况如何&#xff1f;每个月、每个季度…

数据分析真的很火吗?真的有很多企业需要这样的岗位吗?求大佬指点。

“我是去年毕业的&#xff0c;因为疫情影响&#xff0c;整个就业环境都很不好&#xff0c;很多企业都裁员了。加上疫情三年基本都是玩过去&#xff0c;也没啥一技之长&#xff0c;就业就更难了。听说现在做数据分析的人很多&#xff0c;我身边的朋友都在转行做数据分析。 其实…

数据分析师应该了解的数据湖

数据湖 数据湖是一个集中式存储库&#xff0c;允许您以任意规模存储所有结构化和非结构化数据。您可以按原样存储数据&#xff08;无需先对数据进行结构化处理&#xff09;&#xff0c;并运行不同类型的分析 – 从控制面板和可视化到大数据处理、实时分析和机器学习&#xff0c…

数据分析师获取数据的方式有哪些?

1、外部购买数据 有很多公司或者平台是专门做数据收集和分析的&#xff0c;企业会直接从那里购买数据或者相关服务给数据分析师&#xff0c;这是一种常见的获取数据的方式之一。 2、网络爬取数据 除了购买数据以外&#xff0c;数据分析师还可以通过网络爬虫从网络上爬取数据…

计算机网络b站里谁讲得好,除了罗翔,B站还有多少神仙老师?

本文由【哔哩哔哩】授权转载, 【作者:小尹 编辑:会厌】 【图片来自网络,若侵则删】 如果苏格拉底和孔子生活在这个时代,他们会不会上B站,并成为一名UP主呢? 提出这个问题的,是B站UP主、中国政法大学教授罗翔老师。罗翔的粉丝超过千万,是B站最受欢迎的老师之一。 此外,…

受害者有罪论——如何反驳

目录 一、那些「受害者有罪论」的说法 二、「受害者有罪论」的潜台词 三、如何反驳 反驳1&#xff1a;让受害者有罪论者感同身受 反驳2&#xff1a;说理 反驳3&#xff1a; 直接指出结论的错误 反驳4&#xff1a;与对方无关&#xff0c;不用多费唇舌 四、罪犯就是罪犯&…

李永乐老师讲一个量子计算机,别再只知道罗翔了!网上最受欢迎的14位老师,个个让人“开天眼”!...

除了推荐「学什么」&#xff0c;这次&#xff0c;我还要推荐「跟谁学」。 第一反应&#xff0c;是跟着大学老师学习&#xff01; 虽然我是北大清华得不到的人&#xff0c;但是听听高校老师讲课&#xff0c;还是 ok 的。 这里借用一位网友的话&#xff1a; 经过在网络上长时间的…

罗翔老师的书单

编者按&#xff1a; 作为中国政法大学法学教授、B 站坐拥百万粉丝的法考讲师罗翔&#xff0c;在近期的一次访谈中提及他在天桥上帮助一位老人的故事&#xff0c;而这个故事也曾收入他2019年出版的随笔《圆圈正义》。除了讲授法律知识&#xff0c;罗翔也是读书路上一位可靠的引路…

九龙证券|突发黑天鹅,股价两日跌停,这只更名股或将被ST!

今年以来&#xff0c;上市公司定增募资额翻倍增加&#xff0c;北上资金出手加仓多只个股。 今天盘面上&#xff0c;以创新药为首的医药医疗板块全线爆发&#xff0c;首药控股20cm涨停&#xff0c;奥赛康、海思科封板。房地产板块迎来久别反弹&#xff0c;并带动家居家电股走高&…