【问题标题】:How to store images in sqlite database and display them?如何将图像存储在 sqlite 数据库中并显示它们?
【发布时间】:2011-12-28 11:35:34
【问题描述】:

在我的应用程序中,我需要在 Android 中显示问题以及图像。我已将问题存储在 sqlite db 中并显示它们。我在 assets 文件夹中创建了一个文件夹 DBimages。现在我所有的图像都在 DBimages 文件夹中。

我创建了两个类。我能够显示来自本地 sqlite db 的问题和选项,但我无法显示存储在 assets\DBimages\abc.png 中的图像。

所有图像的名称都存储在 sqlite db 表的图片列中。但是如何显示与该特定问题相关的图像。请帮我解决这个问题。

UserBO.java

public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getImage() {
return pictures;
}

public void setImage(String pictures) {
this.pictures = pictures;
}

Select.java

ArrayList<UserBO> usersList = new ArrayList<UserBO>();
for (int i = 0; i < stringList.size(); i++) {
ArrayList<String> list = stringList.get(i);
UserBO user = new UserBO();
try {
user.id = Integer.parseInt(list.get(0));
user.name = list.get(2);
user.question = list.get(3);
user.option1 = list.get(4);
user.option2 = list.get(5);
user.option3 = list.get(6);
user.option4 = list.get(7);
user.option5 = list.get(8);
user.pictures = list.get(9);
user.answer = (list.get(10));
} 
catch (Exception e){}
public View getView(int position, View convertView, ViewGroup parent){
View view = convertView;
try{
if (view == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.list_item, null); 
}
final UserBO listItem = mList.get(position);                
if (listItem != null) {
( (TextView) view.findViewById(R.id.tv_question) ).setText( listItem.getQuestion()+"");
((ImageView) view.findViewById(R.id.imageView1)).setImageResource(R.drawable.f);
( (RadioButton) view.findViewById(R.id.option1) ).setText( listItem.getOption1() );
( (RadioButton) view.findViewById(R.id.option2) ).setText( listItem.getOption2()+"" );
( (RadioButton) view.findViewById(R.id.option3) ).setText( listItem.getOption3()+"" );
( (RadioButton) view.findViewById(R.id.option4) ).setText( listItem.getOption4()+"" );
( (RadioButton) view.findViewById(R.id.option5) ).setText( listItem.getOption5()+"" );
}}catch(Exception e){}
return view;

} }

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    一些丑陋的方式,将图像存储在 SQLite 数据库中。 只需将图片存储在 sdcard 中,并将这些图片的相关路径保存在 SQLite 数据库中即可。

    In your need, put the images in either drawable folder or in asset folder then store its
    name(with question ID or number also) in SQLite and use it in application.
    

    【讨论】:

    • 您好,感谢您的回复。我将图像保存在可绘制文件夹中。现在我需要从 sqlite db image 列中获取 img 路径和图像名称。您能否用示例代码举例说明。提前致谢。
    • 如果您将图像存储在可绘制文件夹中,那么我认为您不必将其存储在数据库文件中,只需将图像重命名为问题 ID 或名称并直接从可绘制文件夹中使用它.
    • 例如。将一张名为 question1 的图像保存在可绘制文件夹中,现在您从 sqlite 数据库中获取问题 1 的数据,如果问题为 1,则从光标的索引中获取数据,然后设置,例如:ImageView image = (ImageView) findViewById(R.id.test_image); image.setImageResource(R.drawable.question1);
    • 您好,我需要存储超过 1000 张图像。那么在这种情况下我该怎么办呢?
    • 如果您在 SQLIte 数据库或应用程序的任何目录中存储 1000 张图像,那么您的应用程序会变大。
    【解决方案2】:

    我遇到了同样的问题,我想首先澄清这一点,将图像路径或库中的 uri 存储为字符串在填充或显示特定于图像的列表视图的数据时可能不会产生良好的结果。您需要将图像作为 BLOB 数据类型存储在 sqlite 数据库中,并且需要将图像作为字节插入数据库。

    就我而言,我尝试使用图库中的图像路径,但从未对我有用。 仅当您使用网站中的 url 时,图像路径才适用

    你可以从这个link看到一个例子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-19
      • 1970-01-01
      • 2012-03-10
      • 1970-01-01
      • 2021-11-16
      相关资源
      最近更新 更多