这个主要学习是关于listview的学习。

怎样去自定义adapter,以及使用。自己创建文件,还有就是为listview的每一个子控件添加点击事件。

在整个过程中收获到的知识点如下:

一、对于数据库查找方面的知识点:

ORDER BY从句后跟要排序的列。ORDER BY 从句出现在SELECT语句的最后。 
排序有升序和降序之分,ASC表示升序排序,DESC表示降序排序。如果不指明排序顺序,默认的排序顺序为升序ASC。如果要降序,必须书写DESC关键字

对于一些网上的例子:这样更容易理解:

悄悄的成长い 2020/2/6 9:18:52
1.升序排序 
【训练1】 查询雇员姓名和工资,并按工资从小到大排序。 
输入并执行查询:

Sql代码
SELECT ename, sal FROM emp ORDER BY sal;

悄悄的成长い 2020/2/6 9:19:03
注意:若省略ASC和DESC,则默认为ASC,即升序排序。 
2.降序排序 
【训练2】 查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。 
输入并执行查询:

Sql代码
SELECT ename,hiredate FROM emp ORDER BY hiredate DESC;

悄悄的成长い 2020/2/6 9:19:17
注意: DESC表示降序排序,不能省略。 
3.多列排序 
可以按多列进行排序,先按第一列,然后按第二列、第三列......。 
【训练3】 查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。 
输入并执行查询:

Sql代码
SELECT ename,deptno,hiredate FROM emp ORDER BY deptno,hiredate;

悄悄的成长い 2020/2/6 9:20:04
说明:该排序是先按部门升序排序,部门相同的情况下,再按雇佣时间升序排序。 
4.在排序中使用别名 
如果要对计算列排序,可以为计算列指定别名,然后按别名排序。 
【训练4】 按工资和工作月份的乘积排序。 
输入并执行查询:

Sql代码
SELECT empno, ename, sal*Months_between(sysdate,hiredate) AS total FROM emp   
        ORDER BY total;
但是自己实际应用时候的写法是“mingzi  asc”这两个是写在一个括号里面,中间用空格分开。

二、关于一个类继承一个接口的时候的操作:

Serializable是Java提供的序列化接口,是一个空接口,为对象提供标准的序列化与反序列化操作。使用Serializable实现序列化过程相当简单,只需要在类声明的时候指定一个标识,便可以自动的实现默认的序列化过程。

private static final long serialVersionUID = 1L;
       上面已经说明让对象实现序列化,只需要让当前类实现Serializable接口,并且声明一个serialVersionUID就可以了,非常的简单方便。实际上serialVersionUID都不是必须的,没有它同样可以正常的实现序列化操作。

User类就是一个实现了Serialzable的类,它是可以被序列化和反序列化的。

public class User implements Serializable {
 
    private static final long serialVersionUID = 1L;
 
    private String userId;
    private String userName;
 
}
       通过Serializable实现对象的序列化过程非常的简单,无需任何操作,系统就为我们自动实现了。如何进行对象的序列化与反序列化操作也是非常的简单,只需要通过ObjectOutputStream,ObjectInputStream进行操作就可以了。

//序列化过程
    public void toSerial() {
        try {
            User user = new User("id", "user");
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("user.txt"));
            objectOutputStream.writeObject(user);
            objectOutputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    //反序列化过程
    public void fromSerial(){
        try {
            ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("user.txt"));
            User user = (User) objectInputStream.readObject();
            objectInputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

三、关于cuosor的相关知识点

Cursor 是每行的集合。使用 moveToFirst() 定位第一行。你必须知道每一列的名称。你必须知道每一列的数据类型。Cursor 是一个随机的数据源。所有的数据都是通过下标取得。
关于 Cursor 的重要方法:
·close()——关闭游标,释放资源
·copyStringToBuffer(int columnIndex, CharArrayBuffer buffer)——在缓冲区中检索请求的列的文本,将将其存储
·getColumnCount()——返回所有列的总数
·getColumnIndex(String columnName)——返回指定列的名称,如果不存在返回-1
·getColumnIndexOrThrow(String columnName)——从零开始返回指定列名称,如果不存在将抛出IllegalArgumentException 异常。
·getColumnName(int columnIndex)——从给定的索引返回列名
·getColumnNames()——返回一个字符串数组的列名
·getCount()——返回Cursor 中的行数
·moveToFirst()——移动光标到第一行
·moveToLast()——移动光标到最后一行
·moveToNext()——移动光标到下一行
·moveToPosition(int position)——移动光标到一个绝对的位置
·moveToPrevious()——移动光标到上一行

下面是自己研究使用listview的具体实验代码:

MessageAdapter.java

  1. package com.example.thetrueappwen;
  2.  
  3. import android.content.Context;
  4. import android.graphics.Color;
  5. import android.view.LayoutInflater;
  6. import android.view.View;
  7. import android.view.ViewGroup;
  8. import android.widget.BaseAdapter;
  9. import android.widget.ListView;
  10. import android.widget.TextView;
  11.  
  12. import java.util.List;
  13.  
  14. public class MessageAdapter extends BaseAdapter
  15. {
  16. private List<Message> mlist;
  17. private Context mContext;
  18. private LayoutInflater mlayoutInflater;
  19. public MessageAdapter(Context context, List<Message> list){
  20. mContext=context;
  21. mlist=list;
  22. mlayoutInflater= LayoutInflater.from(context);
  23. }
  24.  
  25. @Override
  26. public int getCount() {//返回一共有多少条记录
  27. return mlist.size();
  28. }
  29.  
  30. @Override
  31. public Object getItem(int position) {//返回当前的item对象
  32. return mlist.get(position);
  33. }
  34.  
  35. @Override
  36. public long getItemId(int position) {//返回当前item的id
  37. return position;
  38. }
  39.  
  40. @Override
  41. public View getView(int position, View convertView, ViewGroup parent) {
  42. ViewHolder viewHolder;
  43. if(convertView==null)
  44. {
  45. viewHolder=new ViewHolder();
  46. convertView=mlayoutInflater.inflate(R.layout.list_viewlayout,null);
  47. viewHolder.kindtxt=convertView.findViewById(R.id.kindtxt);
  48. viewHolder.datatxt=convertView.findViewById(R.id.datatxt);
  49. viewHolder.jinetxt=convertView.findViewById(R.id.jinetxt);
  50. // viewHolder.eventtxt=convertView.findViewById(R.id.eventtxt);
  51. // viewHolder.choicetxt=convertView.findViewById(R.id.choicetxt);
  52. // viewHolder.timetxt=convertView.findViewById(R.id.timetxt);
  53.  
  54. convertView.setTag(viewHolder);
  55. }else{
  56. viewHolder=(ViewHolder) convertView.getTag();
  57. }
  58. Message message=mlist.get(position);
  59. viewHolder.kindtxt.setText(message.userkind);
  60. viewHolder.datatxt.setText(message.userdata);
  61. viewHolder.jinetxt.setText(message.usermoney);
  62. viewHolder=new ViewHolder();
  63. viewHolder.listwen=convertView.findViewById(R.id.list_view);
  64. if(message.userchoice.equals("收入"))
  65. {
  66. convertView.setBackgroundColor(Color.parseColor("#008577"));//背景色
  67. }
  68. else
  69. {
  70. convertView.setBackgroundColor(Color.parseColor("#D81B60"));//背景色
  71. }
  72. // viewHolder.eventtxt.setText(message.userevent);
  73. // viewHolder.timetxt.setText(message.usertime);
  74. // viewHolder.choicetxt.setText(message.userchoice);
  75.  
  76. return convertView;
  77. }
  78.  
  79. private static class ViewHolder{//该类中包括item文件(activity_news_list_view)中所有需要显示内容的组件
  80. public TextView kindtxt;
  81. public TextView datatxt;
  82. public TextView jinetxt;
  83. public ListView listwen;
  84. // public TextView eventtxt;
  85. //public TextView choicetxt;
  86. // public TextView timetxt;
  87. }
  88. }

FrdFragment.java

  1. package com.example.thetrueappwen;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.database.Cursor;
  6. import android.os.Bundle;
  7. import android.view.LayoutInflater;
  8. import android.view.View;
  9. import android.view.ViewGroup;
  10. import android.widget.AdapterView;
  11. import android.widget.ListView;
  12. import android.widget.Toast;
  13.  
  14. import androidx.annotation.Nullable;
  15. import androidx.fragment.app.Fragment;
  16.  
  17. import java.util.ArrayList;
  18. import java.util.List;
  19.  
  20. public class FrdFragment extends Fragment{
  21. private DBOpenMessage dbOpenMessage;
  22. private String username;
  23. private ListView listview;
  24. private List<Message> alllistmessage = new ArrayList<Message>();
  25.  
  26. @Nullable
  27. @Override
  28. public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
  29. View view = inflater.inflate(R.layout.tab2, container, false);
  30. dbOpenMessage=new DBOpenMessage(getActivity(),"db_wen2",null,1);
  31. listview=(ListView)view.findViewById(R.id.list_view);
  32. getMessage1(username);
  33.  
  34. final MessageAdapter adapter = new MessageAdapter(getActivity(), alllistmessage);
  35. listview.setAdapter(null);
  36. listview.setAdapter(adapter);
  37.  
  38. listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  39. @Override
  40. public void onItemClick(AdapterView parent, View view, int position, long id) {
  41.  
  42. // Intent intent=new Intent(getActivity(),AllMessage.class);
  43. // intent.putExtra("username",username2);
  44. //startActivity(intent);
  45. Message message = (Message) parent.getItemAtPosition(position);
  46.  
  47. Intent intent = new Intent();
  48. intent.setClass(getActivity(), AllMessage.class);
  49. Bundle bundle = new Bundle();
  50. bundle.putSerializable("message", message);
  51. intent.putExtras(bundle);
  52. startActivity(intent);
  53. }
  54. });
  55.  
  56. return view;
  57. }
  58.  
  59. //碎片和活动建立关联的时候调用
  60. @Override
  61. public void onAttach(Context context) {
  62. super.onAttach(context);
  63. username = ((AllWord) context).getTitles();
  64. }
  65. /* private void xianshixinxi()
  66. {
  67. Cursor cursor1=dbOpenMessage.getReadableDatabase().query("db_wen2",null,"username=?",new String[]{username},null,null,null);
  68. ArrayList<Map<String,String>> resultlist=new ArrayList<Map<String,String >>();
  69. }*/
  70. private void getMessage1(String username) {
  71. Cursor cursor=dbOpenMessage.getAllCostData(username);
  72. if(cursor!=null){
  73. while(cursor.moveToNext()){
  74. Message message2=new Message();
  75. message2.userkind=cursor.getString(cursor.getColumnIndex("userkind"));
  76. message2.usermoney=cursor.getString(cursor.getColumnIndex("usermoney"));
  77. message2.userdata=cursor.getString(cursor.getColumnIndex("userdata"));
  78. message2.userevent=cursor.getString(cursor.getColumnIndex("userevent"));
  79. message2.userchoice=cursor.getString(cursor.getColumnIndex("userchoice"));
  80. message2.usertime=cursor.getString(cursor.getColumnIndex("usertime"));
  81. alllistmessage.add(message2);
  82. }
  83. }
  84. }
  85.  
  86. }

AllMessage.java

  1. package com.example.thetrueappwen;
  2.  
  3. import android.content.Context;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.widget.EditText;
  7. import android.widget.TextView;
  8.  
  9. import androidx.appcompat.app.AppCompatActivity;
  10.  
  11. public class AllMessage extends AppCompatActivity
  12. {
  13. private Context context;
  14. private Intent intent;
  15. private String username,usermoney,userkind ,userdata,usertime,userevent,userchoice;
  16. private Message message;
  17. private DBOpenMessage dbOpenMessage;
  18. private EditText jine5,neirong5;
  19. private TextView data5,time5,choice5,kind5;
  20.  
  21. @Override
  22. protected void onCreate(Bundle savedInstanceState) {
  23. super.onCreate(savedInstanceState);
  24. setContentView(R.layout.all_message);
  25. context=this;
  26. intent=getIntent();
  27. username=intent.getStringExtra("username");//经检验已经成功
  28.  
  29. jine5=(EditText)findViewById(R.id.jine5);
  30. neirong5=(EditText)findViewById(R.id.neirong5);
  31. data5=(TextView)findViewById(R.id.data5);
  32. time5=(TextView)findViewById(R.id.time5);
  33. choice5=(TextView)findViewById(R.id.choice5);
  34. kind5=(TextView)findViewById(R.id.kind5);
  35.  
  36. dbOpenMessage=new DBOpenMessage(AllMessage.this,"db_wen2",null,1);
  37. Intent intent = this.getIntent();
  38. message=(Message)intent.getSerializableExtra("message");
  39.  
  40. usermoney=message.getUsermoney();
  41. jine5.setText(usermoney);
  42. userevent=message.getUserevent();
  43. neirong5.setText(userevent);
  44. userdata=message.getUserdata();
  45. data5.setText(userdata);
  46. usertime=message.getUsertime();
  47. time5.setText(usertime);
  48. userchoice=message.getUserchoice();
  49. choice5.setText(userchoice);
  50. userkind=message.getUserkind();
  51. kind5.setText(userkind);
  52. }
  53.  
  54. @Override
  55. public void onDestroy()
  56. {
  57. super.onDestroy();
  58. if(dbOpenMessage!=null)
  59. dbOpenMessage.close();
  60. }
  61. }

还有就是四个布局文件:

tab2.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:orientation="vertical"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. android:background="@color/qianhui"
  9. tools:context=".FrdFragment">
  10.  
  11. <TextView
  12. android:id="@+id/wenwen"
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:layout_marginLeft="40dp"
  16. android:text="粉红色表示支出项目"
  17. android:layout_marginTop="10dp"
  18. android:textSize="15dp"
  19. android:textColor="@color/colorAccent"/>
  20. <TextView
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:layout_toRightOf="@+id/wenwen"
  24. android:layout_marginRight="40dp"
  25. android:layout_marginLeft="50dp"
  26. android:layout_marginTop="10dp"
  27. android:text="绿色表示收入项目"list
  28. android:textSize="15dp"
  29. android:textColor="@color/colorPrimary"/>
  30. <ListView
  31. android:layout_below="@+id/wenwen"
  32. android:layout_width="match_parent"
  33. android:layout_height="match_parent"
  34. android:id="@+id/list_view"/>
  35. </RelativeLayout>

list_viewlayout.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:focusable="false"
  5.  
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent">
  8.  
  9. <TextView
  10. android:id="@+id/kindtxt"
  11. android:layout_width="90dp"
  12. android:layout_height="80dp"
  13. android:layout_marginLeft="10dp"
  14. android:layout_alignParentLeft="true"
  15. android:gravity="center"
  16. android:singleLine="true"
  17. android:textSize="35sp"
  18. android:text="userkindtext"
  19. android:focusable="false"
  20. android:ellipsize="marquee" />
  21.  
  22. <TextView
  23. android:id="@+id/datatxt"
  24. android:layout_width="150dp"
  25. android:layout_height="80dp"
  26. android:layout_toRightOf="@+id/kindtxt"
  27. android:layout_marginLeft="15dp"
  28. android:textSize="20sp"
  29. android:gravity="center"
  30. android:ellipsize="marquee"
  31. android:focusable="false"
  32. android:text="userdatatext"/>
  33.  
  34. <TextView
  35. android:id="@+id/jinetxt"
  36. android:layout_width="120dp"
  37. android:layout_height="80dp"
  38. android:text="userjinetxt"
  39. android:textSize="30sp"
  40. android:layout_marginRight="10dp"
  41. android:layout_alignParentRight="true"
  42. android:singleLine="true"
  43. android:ellipsize="marquee"
  44. android:marqueeRepeatLimit="marquee_forever"
  45. android:focusable="false"
  46. android:gravity="center"/>
  47.  
  48. </RelativeLayout>

allword.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:orientation="vertical"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. tools:context=".MainActivity">
  9.  
  10. <include layout="@layout/top"/>
  11. <androidx.viewpager.widget.ViewPager
  12. android:id="@+id/id_viewpager"
  13. android:layout_width="match_parent"
  14. android:layout_height="0dp"
  15. android:layout_weight="1">
  16. </androidx.viewpager.widget.ViewPager>
  17.  
  18. <include layout="@layout/bottom"/>
  19. </LinearLayout>

all_message.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:tools="http://schemas.android.com/tools"
  4. android:orientation="vertical"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".AllMessage">
  8.  
  9. <TextView
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:text="对应的具体情况"
  13. android:textSize="30dp"
  14. android:gravity="center_horizontal"
  15. android:padding="5dp"
  16. android:background="@color/baise"
  17. android:layout_marginBottom="10dp"
  18. />
  19.  
  20. <LinearLayout
  21. android:id="@+id/ming"
  22. android:layout_width="match_parent"
  23. android:layout_height="wrap_content"
  24. android:orientation="horizontal">
  25.  
  26. <TextView
  27. android:layout_width="wrap_content"
  28. android:layout_height="wrap_content"
  29. android:text="对应的金额:"
  30. android:padding="8dp"
  31. android:background="@color/qianhuang"
  32. android:layout_marginRight="5dp"
  33. android:textSize="18sp" />
  34.  
  35. <EditText
  36. android:id="@+id/jine5"
  37. android:layout_width="match_parent"
  38. android:layout_height="wrap_content"
  39. android:hint="请输入收入的金额"
  40. android:inputType="number"
  41. android:lines="2"
  42. android:padding="8dp"
  43. android:background="@color/baise"
  44. android:layout_marginBottom="10dp"
  45. />
  46.  
  47. </LinearLayout>
  48.  
  49. <EditText
  50. android:id="@+id/neirong5"
  51. android:layout_width="match_parent"
  52. android:layout_height="wrap_content"
  53. android:hint="请输入收入的相关内容"
  54. android:lines="8"
  55. android:padding="8dp"
  56. android:background="@color/baise"
  57. android:layout_marginBottom="10dp"
  58. android:inputType="textMultiLine"
  59. android:gravity="top"
  60. />
  61.  
  62. <LinearLayout
  63. android:layout_width="match_parent"
  64. android:layout_height="wrap_content"
  65. android:orientation="horizontal">
  66.  
  67. <TextView
  68. android:layout_width="wrap_content"
  69. android:layout_height="wrap_content"
  70. android:text="选择日期:"
  71. android:padding="8dp"
  72. android:background="@color/baise"
  73. android:textSize="18sp" />
  74.  
  75. <TextView
  76. android:id="@+id/data5"
  77. android:layout_width="match_parent"
  78. android:layout_height="wrap_content"
  79. android:padding="8dp"
  80. android:background="@color/qianhuang"
  81. android:textSize="18sp" />
  82.  
  83. </LinearLayout>
  84.  
  85. <LinearLayout
  86. android:layout_width="match_parent"
  87. android:layout_height="wrap_content"
  88. android:layout_marginTop="10dp"
  89. android:orientation="horizontal">
  90.  
  91. <TextView
  92. android:layout_width="wrap_content"
  93. android:layout_height="wrap_content"
  94. android:text="选择时间:"
  95. android:padding="8dp"
  96. android:background="@color/baise"
  97. android:textSize="18sp" />
  98.  
  99. <TextView
  100. android:id="@+id/time5"
  101. android:layout_width="match_parent"
  102. android:layout_height="wrap_content"
  103. android:background="@color/qianhuang"
  104. android:padding="8dp"
  105. android:layout_marginBottom="10dp"
  106. android:textSize="18sp" />
  107.  
  108. </LinearLayout>
  109. <TextView
  110. android:id="@+id/age"
  111. android:layout_width="wrap_content"
  112. android:layout_height="wrap_content"
  113. android:text="账单类别"
  114. android:background="@color/chengse"
  115. android:layout_gravity="center_horizontal"
  116. android:layout_marginBottom="10dp"
  117. android:layout_marginTop="15dp"
  118. android:textSize="25sp" />
  119. <TextView
  120. android:id="@+id/choice5"
  121. android:layout_width="wrap_content"
  122. android:layout_height="wrap_content"
  123. android:background="@color/qianhuang"
  124. android:padding="8dp"
  125. android:layout_gravity="center_horizontal"
  126. android:text="收出"
  127. android:layout_marginBottom="10dp"
  128. android:textSize="18sp" />
  129.  
  130. <TextView
  131. android:id="@+id/kind5"
  132. android:layout_width="wrap_content"
  133. android:layout_height="wrap_content"
  134. android:background="@color/qianhuang"
  135. android:padding="8dp"
  136. android:layout_gravity="center_horizontal"
  137. android:text="类型"
  138. android:layout_marginBottom="10dp"
  139. android:textSize="18sp" />
  140.  
  141. </LinearLayout>

具体的是研究过如下:

当点击其中一个账单的时候:

家庭版记账本app进度之关于listview显示账单,并为其添加点击事件的更多相关文章

  1. 家庭版记账本app进度之对于按钮的点击事件以及线性布局以及(alertdialog)等相关内容的应用测试

    通过线性布局,制作出连个按钮还有文本输入框以及嘴上放的标题文本进行信息的相关显示,完后最后的信息的输入,之后在屏幕的的下方进行显示 当点击第一个按钮的时候,在下方就会简单的出现你自己刚刚输入的相关信息 ...

  2. 家庭版记账本app进度之关于android界面布局的相关学习

    1.线性布局(linearlayout)是一种让视图水平或垂直线性排列的布局线性布局使用<LinearLayout>标签进行配置对应代码中的类是android.widget.LinearL ...

  3. 家庭版记账本app进度之编辑框组件

    <EditText>中设置提示信息是用到的语句是android:hint来进行提示语句的书写. android:inputType可以将此编辑框设置为输入密码的编辑框(现实的是小黑点) a ...

  4. 家庭版记账本app开发完成

    经过这几天关于android的相关学习,对于家庭版记账本app以及开发结束. 实现的功能为:用户的注册.登录.添加支出账单.添加收入账单.显示所有的该用户的账单情况(收入和支出).生产图表(直观的显示 ...

  5. 家庭记账本app进度之复选框以及相应滚动条的应用

    这次主要是对于android中复选框的相应的操作.以及其中可能应用到的滚动条的相关应用.每一个复选框按钮都要有一个checkBox与之相对应. 推荐使用XML配置,基本语法如下:<CheckBo ...

  6. 家庭版记账本app之常用控件的使用方法

    现在先介绍在android开发的时候会用的相关的控件,做一个基本的了解方便我们之后对其进行相关具体的操作.下面是相应额详细情况: TextView android:layout_width 和 and ...

  7. 家庭版记账本app开发进度相关界面的规划

    总的app界面包括四个页面,页面可以来回滑动.设计的时候就和微信的四个页面类似. 由于没有找到合适的图标进行替换,在此仍应用微信对应的四个图标. 总的四个页面是: 1.增加收入或者支出的小账单.当点击 ...

  8. 家庭版记账本app开发进度。开发到现在整个app只剩下关于图表的设计了,具体功能如下

    首先说一下自己的功能: 实现了用户的登录和注册.添加收入记账和添加支出记账.粗略显示每条账单基本情况.通过点击每条账单来显示具体的情况, 之后就是退出当前用户的操作. 具体的页面情况如下: 这就是整个 ...

  9. 家庭版记账本app开发之关于(数据库查找出数据)圆饼图的生成

    这次完成的主要的怎样从数据库中调出数据.之后通过相关的数据,生成想要的圆饼图.以方便用户更加直观的看见关于账本的基本情况. 在圆饼图生成中用到了一些外部资源 具体的import如下: import c ...

随机推荐

  1. js中的堆和栈

    http://www.jscwwd.com/article/5e533ae2552a8e2bf45d3d69 这里先说两个概念:1.堆(heap)2.栈(stack)堆 是堆内存的简称.栈 是栈内存的 ...

  2. 7.vue前台配置、插件、组件

    目录 luffy前台配置 axios前后台交互 cookies操作 element-ui页面组件框架 bootstrap页面组件框架 luffy前台配置 axios前后台交互 安装:前端项目目录下的终 ...

  3. 当AI遇上K8S:使用Rancher安装机器学习必备工具JupyterHub

    Jupyter Notebook是用于科学数据分析的利器,JupyterHub可以在服务器环境下为多个用户托管Jupyter运行环境.本文将详细介绍如何使用Rancher安装JupyterHub来为数 ...

  4. javascript中事件概述

    事件就是用户或浏览器自身执行的某种动作.诸如click.load.和mouseover,都是事件的名字.而响应某个事件的函数就叫做事件处理程序(或事件侦听器).事件处理程序的名字以"on&q ...

  5. shiro框架总结

    一.概念 shiro是一个安全框架,主要可以帮助我们解决程序开发中认证和授权的问题.基于拦截器做的权限系统,权限控制的粒度有限,为了方便各种各样的常用的权限管理需求的实现,,我们有必要使用比较好的安全 ...

  6. Python程序设计试验报告一: 熟悉IDLE和在线编程平台

    安徽工程大学 Python程序设计 实验报告                                                                  班级   物流192   ...

  7. VS2019 C++动态链接库的创建使用(1) - 创建使用dll

    静态库:函数和数据被编译进一个二进制文件,通常扩展名为.lib,在使用静态库的情况下,在编译链接可执行文件时,链接器从库中复制这些函数和数据并把它们和应用程序的其它模块组合起来创建最终的可执行文件. ...

  8. Spinner 用法

    </Spinner> <TextView android:layout_width="wrap_content" android:layout_height=&q ...

  9. pytorch tensor的索引与切片

    切片方式与numpy是类似. * a[:2, :1, :, :], * 可以用-1索引. * ::2,表示所有数据,间隔为2,即 start:end:step. *  a.index_select(1 ...

  10. mysql字段数据类型、设置严格模式

    表操作 今日内容 1.数据类型 建表的时候,字段都有对应的数据类型 整型 浮点型 字符类型(char与varchar) 日期类型 枚举与集合 2.约束条件 primary key unique key ...