title | author | date | CJKmainfont | fontsize | linkcolor | urlcolor | citecolor | filecolor | toccolor | geometry | papersize | documentclass | output | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
安卓数据库调用说明 |
吴静迪 |
2020年9月24日 |
黑体 |
12pt |
blue |
green |
cyan |
magenta |
red |
margin=0.3in |
A4 |
article |
|
- 所有的景点数据被封装在
ScenicSpot
类中,包括景点名称,简介,开放时间,介绍图片的路径等数据 - 介绍图片只存储了路径,并没有存储实际的Bitmap位图图像,需要调用
ScenicSpot
类中的getLocalBitmap()
方法,传入一个int
类型的值作为参数,该参数指示需要生成的Bitmap
类对应的是该景点介绍图片列表的哪一个下标,最后通过ImageView
类中的setImageBitmap
方法传入Bitmap
类显示图片 - 全部页面使用
fragment
作为显示方法,不清楚看这个-Navigation组件的使用方法,调用的时候先在类中声明ScenicSpotViewModel scenicSpotViewModel;
这一我自己定义的ViewModel对象,再使用scenicSpotViewModel = new ViewModelProvider(this).get(ScenicSpotViewModel.class);
这一个方法获取对象。 scenicSpotViewModel
提供了getScenicSpotList
方法用于获得所有景点的对象,insertScenicSpot
方法用于插入一个新的景点对象。ScenicSpot
提供了默认构造方法,用于构造一个默认景点,但是因为图片路径存储在本机,不是每个人在那个位置上都有图片存在,建议在AVD中上传图片后再修改ScenicSpot
提供了默认构造景点的函数对象中关于景点路径的部分,避免无法显示。
参看MainActivity中的代码片段,我在界面里写了一个按钮,每次按动按钮会增加一个默认的景点,并更新显示,将图片替换为指定的一张图片(主要是为了展示如何从外存显示图片 )
public class MainActivity extends AppCompatActivity {
ScenicSpotViewModel scenicSpotViewModel;
ImageView imageView;
TextView textView;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.scenicInfo);
imageView = findViewById(R.id.imageTestView);
button = findViewById(R.id.insertButton);
//获取ScenicSpotViewModel对象
scenicSpotViewModel = new ViewModelProvider(this).get(ScenicSpotViewModel.class);
//通过ScenicSpotViewModel对象获取所有景点信息
List<ScenicSpot> scenicSpotList = scenicSpotViewModel.getScenicSpotList();
//根据景点信息更新textView的显示
StringBuilder text = new StringBuilder();
for (int i = 0; i < scenicSpotList.size(); i++)
text.append(scenicSpotList.get(i).toString()).append('\n');
textView.setText(text);
//尝试插入新的景点
scenicSpotViewModel.insertScenicSpot(new ScenicSpot());
//设置按键监听
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//插入一个新的景点
scenicSpotViewModel.insertScenicSpot(new ScenicSpot());
//更新显示
StringBuilder text = new StringBuilder();
List<ScenicSpot> scenicSpotList = scenicSpotViewModel.getScenicSpotList();
for (int i = 0; i < scenicSpotList.size(); i++)
text.append(scenicSpotList.get(i).toString()).append('\n');
textView.setText(text);
//设置ImageView的图片(从外存调用)
imageView.setImageBitmap(scenicSpotList.get(0).getLocalBitmap(0)); //设置Bitmap
}
});
}
}
先在本地的git仓库进行更新,待完成功能后我们统一协调后再进行git库的更新。
调用外部存储需要在AVD中手动进行授权,否则会导致文件禁止访问,选择APP Info完成外部存储访问授权。