Android 开发第二天

匿名 (未验证) 提交于 2019-12-02 23:53:01

IDE:Android Studio 3.5 RC 2

开发语言:Java

SDK版本:Android 9.0 API 28

builde.gradle

apply plugin: 'com.android.application'  android {     compileSdkVersion 29     buildToolsVersion "29.0.1"       defaultConfig {         applicationId "com.aaa.aListView"         minSdkVersion 24         targetSdkVersion 29         versionCode 1         versionName "1.0"          testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"     }      buildTypes {         release {             minifyEnabled false             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'         }     }  }  dependencies {     implementation fileTree(dir: 'libs', include: ['*.jar'])      implementation 'androidx.appcompat:appcompat:1.0.2'     implementation 'androidx.constraintlayout:constraintlayout:1.1.3'     testImplementation 'junit:junit:4.12'     androidTestImplementation 'androidx.test.ext:junit:1.1.1'     androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' }

1. ListView实现数据的列表显示

com.aaa.domain/Dog.java

package com.aaa.domain;  /**  * 作者:kevin on 2019/8/8 20:19  */ public class Dog {     private Integer dogId;      // 狗的编号     private String dogName;     // 狗的名称     private String dogSkin;     // 狗的皮肤     private Float dogPrice;     // 狗的价格      public Dog() {     }      public Dog(String dogName, String dogSkin, Float dogPrice) {         this.dogName = dogName;         this.dogSkin = dogSkin;         this.dogPrice = dogPrice;     }      public Dog(Integer dogId, String dogName, String dogSkin, Float dogPrice) {         this.dogId = dogId;         this.dogName = dogName;         this.dogSkin = dogSkin;         this.dogPrice = dogPrice;     }      public Integer getDogId() {         return dogId;     }      public void setDogId(Integer dogId) {         this.dogId = dogId;     }      public String getDogName() {         return dogName;     }      public void setDogName(String dogName) {         this.dogName = dogName;     }      public String getDogSkin() {         return dogSkin;     }      public void setDogSkin(String dogSkin) {         this.dogSkin = dogSkin;     }      public Float getDogPrice() {         return dogPrice;     }      public void setDogPrice(Float dogPrice) {         this.dogPrice = dogPrice;     }      @Override     public String toString() {         return "Dog{" +                 "dogId=" + dogId +                 ", dogName='" + dogName + '\'' +                 ", dogSkin='" + dogSkin + '\'' +                 ", dogPrice=" + dogPrice +                 '}';     } }

com.aaa.service/OpenDatabaseService.java

package com.aaa.service;  import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper;  /**  * 作者:kevin on 2019/8/8 17:28  */ public class OpenDatabaseService extends SQLiteOpenHelper {     public OpenDatabaseService(Context context) {         // 参数说明:上下文对象 数据库文件 使用默认游标 数据库版本         super(context,"kevin.db",null,1);     }     // 2019年8月8日17:30:17 这个方法在数据库文件第一次创建的时候被调用     @Override     public void onCreate(SQLiteDatabase db) {         // SQLite数据库中,除了表的主键。其他字段的值是不分类型的,VARCHAR(20)这些东西可以省略         String sql = "CREATE TABLE dog(dogId integer PRIMARY KEY AUTOINCREMENT,dogName varchar(20),dogSkin varchar(20),dogPrice float(20))";        // 创建表的语句         db.execSQL(sql);     }      @Override   // 2019年8月8日17:38:32 这个方法在数据库版本号发生改变的时候被调用     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {     } }

com.aaa.service/DogService.java

package com.aaa.service;  import android.database.Cursor; import android.database.sqlite.SQLiteDatabase;  import com.aaa.domain.Dog;  import java.util.ArrayList; import java.util.List;  /**  * 作者:kevin on 2019/8/8 20:53  */ public class DogService {     private SQLiteDatabase dbOption;      public DogService(SQLiteDatabase dbOption) {         this.dbOption = dbOption;     }      // 2019年8月8日20:53:53 插入数据     public void insert(Dog dog){         String sql = "INSERT INTO dog(dogName,dogSkin,dogPrice) values(?,?,?)";         dbOption.execSQL(sql,new Object[]{dog.getDogName(),dog.getDogSkin(),dog.getDogPrice()});         // dbOption.close();   // 可以关也可以不关     }     // 2019年8月8日21:18:58 删除数据     public void delete(int id){         String sql = "DELETE FROM dog Where dogId = ?";         dbOption.execSQL(sql,new Object[]{id});     }     // 2019年8月8日21:20:39 改数据     public void update(Dog dog){         String sql = "UPDATE dog SET dogName = ?,dogSkin = ?,dogPrice = ? WHERE dogId = ?";         dbOption.execSQL(sql,new Object[]{dog.getDogName(),dog.getDogSkin(),dog.getDogPrice(),dog.getDogId()});     }     // 2019年8月8日21:23:26 查询数据     public Dog query(int id){         String sql = "SELECT * FROM dog WHERE dogId = ?";         Cursor cursor = dbOption.rawQuery(sql, new String[]{String.valueOf(id)});         if(cursor.moveToFirst()){             int dogId = cursor.getInt(cursor.getColumnIndex("dogId"));             String dogName = cursor.getString(cursor.getColumnIndex("dogName"));             String dogSkin = cursor.getString(cursor.getColumnIndex("dogSkin"));             float dogPrice = cursor.getFloat(cursor.getColumnIndex("dogPrice"));             return new Dog(dogId,dogName,dogSkin,dogPrice);         }         cursor.close();         return null;     }     // 2019年8月8日21:25:16 获取数据库记录的总条目数     public long getCount(){         String sql = "SELECT COUNT(*) FROM dog";         Cursor cursor = dbOption.rawQuery(sql,null);         cursor.moveToFirst();         long result = cursor.getLong(0);         return result;     }      // 2019年8月8日21:39:01 分页查询     public List<Dog> getPaginationData(int start,int pageSize){         List<Dog> dogs = new ArrayList<>();         String sql = "SELECT * FROM dog ORDER BY dogId ASC LIMIT ?,?";         Cursor cursor = dbOption.rawQuery(sql,new String[]{String.valueOf(start),String.valueOf(pageSize)});         while (cursor.moveToNext()){             int dogId = cursor.getInt(cursor.getColumnIndex("dogId"));             String dogName = cursor.getString(cursor.getColumnIndex("dogName"));             String dogSkin = cursor.getString(cursor.getColumnIndex("dogSkin"));             float dogPrice = cursor.getFloat(cursor.getColumnIndex("dogPrice"));             dogs.add(new Dog(dogId,dogName,dogSkin,dogPrice));         }         return dogs;     }     // 2019年8月9日08:52:15    获取分页数据的第二种方式     public Cursor getCursorPagination(int start,int pageSize){         List<Dog> dogs = new ArrayList<>();         String sql = "SELECT dogId as _id,dogName,dogSkin,dogPrice FROM dog ORDER BY dogId ASC LIMIT ?,?";         Cursor cursor = dbOption.rawQuery(sql,new String[]{String.valueOf(start),String.valueOf(pageSize)});         return cursor;     } }

com.aaa.aListView/Main.java

package com.aaa.aListView;  import androidx.appcompat.app.AppCompatActivity;  import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.widget.ListView; import android.widget.SimpleAdapter; import android.widget.SimpleCursorAdapter;  import com.aaa.domain.Dog; import com.aaa.service.DogService; import com.aaa.service.OpenDatabaseService;  import java.util.ArrayList; import java.util.HashMap; import java.util.List;  public class Main extends AppCompatActivity {     private ListView listView;     private SQLiteDatabase dbOption;     private DogService dogService;     private Dog dog;      @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.main);         listView = this.findViewById(R.id.list_item);         dbOption = new OpenDatabaseService(Main.this).getWritableDatabase();    // 得到数据库操作对象         dogService = new DogService(dbOption);                                  // 得到dogService对象         dog = new Dog();         // insertData();    // 插入假数据40条         //  showData1();      // 通过SimpleAdapter适配器绑定数据         // showData2();         showData3();        // 自定义适配器     }     // 2019年8月9日08:39:38 插入假数据,方便后面查询     public void insertData(){         for(int i=0; i<40; i++){             dog.setDogId(i);             dog.setDogName("阿拉斯加犬"+i+"号");             dog.setDogSkin("绿色"+i+"号");             dog.setDogPrice((float)i+100);             dogService.insert(dog);         }     }     // 2019年8月9日08:48:48    使用SimpleAdapter绑定数据     public void showData1(){         List<Dog> dogs = dogService.getPaginationData(5, 20);         List<HashMap<String,Object>> data = new ArrayList<HashMap<String, Object>>();         for(Dog dog:dogs){             HashMap<String,Object> map = new HashMap<String,Object>();             map.put("dogId",dog.getDogId());             map.put("dogName",dog.getDogName());             map.put("dogSkin",dog.getDogSkin());             map.put("dogPrice",dog.getDogPrice());             data.add(map);         }         // 通过适配器把dogs集合中的数据显示到ListView中的条目         String[] keys = {"dogId","dogName","dogSkin","dogPrice"};       // data集合中的dogId可以对应的值绑定到R.id.dogId这个控件         int[] views ={R.id.dogId,R.id.dogName,R.id.dogSkin,R.id.dogPrice};         SimpleAdapter simpleAdapter = new SimpleAdapter(Main.this,data,R.layout.dogs,keys,views);         listView.setAdapter(simpleAdapter);     }         // 2019年8月9日09:16:54    通过cursor对象绑定数据     public void showData2(){         Cursor cursor = dogService.getCursorPagination(5, 20);         String[] keys = {"_id","dogName","dogSkin","dogPrice"};       // data集合中的dogId可以对应的值绑定到R.id.dogId这个控件         int[] views ={R.id.dogId,R.id.dogName,R.id.dogSkin,R.id.dogPrice};         SimpleCursorAdapter simpleCursorAdapter = new SimpleCursorAdapter(Main.this,R.layout.dogs,cursor,keys,views,0);         listView.setAdapter(simpleCursorAdapter);     }     }

自定义适配器实现数据的绑定

com.aaa.adapter/MyAdapter.java

package com.aaa.adapter;  import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView;  import com.aaa.aListView.R; import com.aaa.domain.Dog;  import java.util.List;  /**  * 作者:kevin on 2019/8/9 09:30  */ public class MyAdapter extends BaseAdapter {     private List<Dog> dogs ;    // 定义需要绑定的数据     private int resource;       // 数据绑定的条目界面     private LayoutInflater inflater;// 布局填充器,可以用一个xml文件生成一个View对象     public MyAdapter(Context context, List<Dog> dogs, int resource) {         this.dogs = dogs;         this.resource = resource;         inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);     }      @Override   // 用于得到记录的总数     public int getCount() {         return dogs.size(); // 数据的总数     }      @Override   // 某个索引对应的元素     public Object getItem(int position) {         return dogs.get(position);     }      @Override     public long getItemId(int position) {         return position;     }      @Override   // position 该条目索要绑定的数据在集合中的索引值     public View getView(int position, View view, ViewGroup parent) {        if(view == null){             view = inflater.inflate(resource,null);        }        TextView dogId = view.findViewById(R.id.dogId);         TextView dogName = view.findViewById(R.id.dogName);         TextView dogSkin = view.findViewById(R.id.dogSkin);         TextView dogPrice = view.findViewById(R.id.dogPrice);         Dog dog = dogs.get(position);         dogId.setText(dog.getDogId());         dogName.setText(dog.getDogName());         dogSkin.setText(dog.getDogSkin());         dogPrice.setText(dog.getDogPrice().toString());        return view;     } }

Main.java添加方法

    // 2019年8月9日09:29:29   通过自定义适配器绑定数据     public void showData3(){         List<Dog> dogs = dogService.getPaginationData(5, 20);         MyAdapter myAdapter = new MyAdapter(Main.this,dogs,R.layout.dogs);         listView.setAdapter(myAdapter);     }

来源: https://www.cnblogs.com/kevinOnes1/p/11324818.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!