[英]Not able to display the image on listview
我正在嘗試顯示從URL下載的圖像並將其顯示在列表視圖中。 這是我的源代碼。 輸出有一個空白點..就這樣...
這是我從中調用的java。
ABC s = ABC.getSingletonObject();
String[][] full_data = s.getString();
private ListView listView1;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
//second one is always the type of data...
Weather weather_data[] = new Weather[]
{ // full_data[1][0] contains the URL String..
new Weather(full_data[1][0],full_data[1][2],full_data[1][3]),
new Weather(full_data[2][0],full_data[2][2],full_data[2][3]),
};
WeatherAdapter adapter = new WeatherAdapter(this,R.layout.listview_header_row, weather_data);
listView1 = (ListView)findViewById(R.id.listView1);
View header = (View)getLayoutInflater().inflate(R.layout.listview_header_row, null);
listView1.addHeaderView(header);
listView1.setAdapter(adapter);
}
這是我的適配器..
public class WeatherAdapter extends ArrayAdapter<Weather> {
Context context;
int layoutResourceId;
Weather data[] = null;
public WeatherAdapter(Context context, int layoutResourceId, Weather[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
WeatherHolder holder = null;
if(row == null)
{
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
row = inflater.inflate(layoutResourceId, parent, false);
holder = new WeatherHolder();
holder.imgIcon = (ImageView)row.findViewById(R.id.imageView1);
holder.txtTitle = (TextView)row.findViewById(R.id.txt1);
holder.txtRating=(TextView)row.findViewById(R.id.rtxt1);
row.setTag(holder);
}
else
{
holder = (WeatherHolder)row.getTag();
}
Weather weather = data[position];
holder.txtTitle.setText(weather.wtitle);
holder.imgIcon.setImageDrawable(weather.wicon);
holder.txtRating.setText(weather.wrating);
//holder.imgIcon.setImageResource(R.drawable.ic_launcher);
//holder.imgIcon.setImageBitmap(weather.wicon);
return row;
}
static class WeatherHolder
{
//Bitmap imgIcon;
ImageView imgIcon;
TextView txtTitle;
TextView txtRating;
}
}
這是另一個Java文件
public class Weather {
public Drawable publicdraw;
public Drawable wicon;
public String wtitle;
public String wrating;
public Weather(){
super();
}
public Weather(String icon, String title,String rating) {
super();
LoadImageFromWebOperations(icon);
this.wtitle = title;
this.wrating=rating;
this.wicon=publicdraw;
}
public void LoadImageFromWebOperations(String url_string) {
try {
grabImage(url_string);
} catch (Exception e) {
}
}
public void grabImage(String url) {
new GrabURL1().execute(url);
}
private class GrabURL1 extends AsyncTask<String, Void, Void> {
public Drawable d;
InputStream is;
protected Void doInBackground(String... urls) {
try {
is = (InputStream) new URL(urls[0]).getContent();
d = Drawable.createFromStream(is, "src name");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void unused) {
publicdraw=d;
}
}
}
我建議您閱讀本教程 。 直截了當,並不困難而且非常有效。 我將其用於在列表視圖上加載圖像的項目。
如果您卡在某個地方,請詢問。
在將圖像分配到列表之前,嘗試添加以下條件。
if (holder.imgIcon != null && position < weather_data.size()) {
Weather weather = data[position];
holder.imgIcon.setImageDrawable(weather.wicon);
}
我有同樣的問題,這個技巧對我來說就像是一種魅力。
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.