我非常感谢我的查询帮助。 我正在构建的应用程序正在从Web地址(使用JSON)下载文本和图像,并将文本存储在sqlite数据库中,并将图像存储在手机的SD卡中。 然后我想在listView中显示文本和相关图像。 我没有显示文本的问题,但我无法显示imageView。
以下是MainActivity中的代码,它从sqlite数据库中获取文本并填充列表字符串。
@SuppressLint("NewApi") private void displayListView() {
IgroDatabaseHelper helper = new IgroDatabaseHelper(getBaseContext());
globalVariable.userLang = helper.userLanguage();
ArticlesTable = globalVariable.userLang + "Articles";
numRows = helper.NumEntries(ArticlesTable);
int i = 1;
String headText;
String artID;
String Date;
File imgFile;
List<String> headingArray = new ArrayList<String>(); // array holding the headings to show in TextView
List<String> artIDArray = new ArrayList<String>(); // array of article IDs used to get the name of the corresponding image
List<String> imgArray = new ArrayList<String>();
File SDCardRoot = Environment.getExternalStorageDirectory().getAbsoluteFile();
lv = (ListView) findViewById(R.id.list);
String filename;
while (i <= numRows){ //loop over the number of Articles headings
headText = helper.getTextFromTable(ArticlesTable, i, "heading");
artID = helper.getTextFromTable(ArticlesTable, i, "artID");
image = Environment.getExternalStorageDirectory() + artID + ".png”;
// getting the image to be shown
filename= artID + ".png";
imgFile = new File(SDCardRoot,filename);
Bitmap b = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
headingArray.add(headText);
artIDArray.add(artID);
imgArray.add(filename);
i= i + 1;
}
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
R.layout.article_row, R.id.heading, headingArray);
lv.setAdapter(arrayAdapter);
}
}
下面是article_row xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background = "#5a9b3e"
android:alpha = "0.7"
>
<TextView
android:id="@+id/heading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textStyle="bold"
android:alpha = "1.0"
android:layout_marginStart="10sp"
android:layout_marginLeft="10sp"
android:layout_weight="5" />
<ImageView
android:id="@+id/smallimage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_weight="1"/>
</LinearLayout>
我认为我没有使用正确的数据结构,因为即使显示文本,我也无法合并图像。但我不知道使用什么数据结构来保存文本和图像并在while循环中填充它。
非常感谢任何帮助。
提前感谢你们所有人!
答案 0 :(得分:0)
您可以直接在服务器上显示图像而不保存它们。但是如果你想做同样的事情,你应该尝试这种方法列出来自SDCard的图像