gpt4 book ai didi

android - 如何在 asynctask onPostExecute 上从服务器的 imageview 上显示图像?

转载 作者:行者123 更新时间:2023-11-29 21:48:50 24 4
gpt4 key购买 nike

我的 mysql 中有一个文章表,每篇文章都有一个图像。

**article_id**    **article_image**
00001 display/Article1image.png
00002 display/Article2image.jpg
00003 display/Article3image.jpg
00004 display/Article4image.png

假设我正在使用不同的 View (例如article_content、article_writer、date_published 等)在线性布局上打印所有文章信息...,并且我想在以编程方式创建的ImageView 上显示article_image

假设`"www.sampleweb.com/"+_jsonObject.optString("article_image").toString()'是来自服务器的图像的完整链接。

这是我的完整代码,如何使用上述图像网址的内容创建 ImageView ?

@Override
public void onPostExecute(String result) {
//headlinehead.setText(result);
try{
JSONObject jsonRootObj = new JSONObject(result);
JSONArray jsonArray = jsonRootObj.optJSONArray("Data");
JSONObject jsonObject = jsonArray.getJSONObject(0);
//code for headline
this.headlinehead.setText(jsonObject.optString("title").toString());
this.shortdesc.setText(jsonObject.optString("shortdesc").toString());
this.headlinesender.setText(jsonObject.optString("penname").toString());
this.img.setTag(jsonObject.optString("id").toString());
//code for headline
for (int p = 1; p < jsonArray.length(); p++){
JSONObject _jsonObject = jsonArray.getJSONObject(p);
LinearLayout conteach = new LinearLayout(getActivity().getApplicationContext());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
conteach.setLayoutParams(lp);
conteach.setOrientation(LinearLayout.VERTICAL);

TextView art_title = new TextView(getActivity().getApplicationContext());
art_title.setText(_jsonObject.optString("title").toString());
art_title.setTextSize(20);
art_title.setLayoutParams(new LayoutParams(350,LayoutParams.WRAP_CONTENT));

TextView art_shortdesc = new TextView(getActivity().getApplicationContext());
art_shortdesc.setText(_jsonObject.optString("shortdesc").toString());
art_shortdesc.setTextSize(14);
art_shortdesc.setTypeface(null, Typeface.ITALIC);
art_shortdesc.setLayoutParams(new LayoutParams(350,LayoutParams.WRAP_CONTENT));

TextView art_sender = new TextView(getActivity().getApplicationContext());
art_sender.setText("Written by: " + _jsonObject.optString("sender").toString());
art_sender.setTextSize(14);
art_sender.setLayoutParams(new LayoutParams(350,LayoutParams.WRAP_CONTENT));
art_sender.setPadding(0, 0, 0, 15);


conteach.addView(art_title);
conteach.addView(art_shortdesc);
conteach.addView(art_sender);
conteach.setTag(_jsonObject.optString("id").toString());
conteach.setClickable(true);
conteach.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
SpecificArticleFragment spcf = new SpecificArticleFragment();
Bundle args = new Bundle();
args.putString("art_id", v.getTag().toString());
spcf.setArguments(args);

FragmentManager ft = getFragmentManager();
ft.beginTransaction().replace(R.id.content_frame, spcf).commit();
}
});
this.llist.addView(conteach);

}
this.pbColBul.setVisibility(ProgressBar.GONE);
} catch(JSONException e){

}
}

最佳答案

以编程方式创建 ImageView,就像使用 Textview 一样。使用 Picasso 将 url 加载到其中。它做得很好并为您提供一些有用的方法,并在图像完成开箱即用时提供淡入效果。
至于JSON解析,我推荐使用RetrofitOkHttp客户。这比您的实现容易得多。另外,Retrofit 可以在后台进行 API 调用,因此,删除 AsyncTask

关于android - 如何在 asynctask onPostExecute 上从服务器的 imageview 上显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com