我已经实现了一个ListView加载新闻,但是当我滚动列表时新闻更改位置。这是清单ListView项目更改滚动位置
public class ListNewsFragment extends SherlockListFragment{
private ListNewsAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
mAdapter = new ListNewsAdapter(this, app.getAllNews());
setListAdapter(mAdapter);
super.onCreate(savedInstanceState);
}
}
public class ListNewsAdapter extends BaseAdapter{
private List<News> news;
private Context mContext;
private LayoutInflater inflater;
private ViewHolder holder;
public ListNewsAdapter(final Fragment c, List<News> news) {
super();
this.news = news;
this.mContext = c.getActivity();
inflater = LayoutInflater.from(mContext);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
holder = new ViewHolder();
v = inflater.inflate(R.layout.fragment_list_news, null);
holder.name = (TextView) v.findViewById(R.id.tittle);
holder.tweet = (TextView) v.findViewById(R.id.news);
holder.avatar = (ImageView) v.findViewById(R.id.image);
holder.name.setText(news.get(position).getTitulo());
holder.tweet.setText(news.get(position).getCopete());
new ImagefetcherTask(position).execute(holder);
v.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
return v;
}
private class ViewHolder{
public TextView name, tweet;
public ImageView avatar;
}
private class ImagefetcherTask extends AsyncTask<ViewHolder, Void, ViewHolder> {
private Bitmap bitmap;
int position;
public ImagefetcherTask(int position) {
this.position = position;
}
@Override
protected ViewHolder doInBackground(ViewHolder... params) {
ViewHolder viewHolder = params[0];
try{
bitmap = BitmapFactory.decodeStream((InputStream) new URL("...."+ news.get(position).getImagen().toString()).getContent());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return viewHolder;
}
@Override
protected void onPostExecute(ViewHolder result) {
// TODO Auto-generated method stub
if (bitmap == null) {
result.avatar.setImageResource(com.dev.suma_intranet_v1.R.drawable.img_perfil);
} else {
result.avatar.setImageBitmap(bitmap);
}
}
}
}
只设置文本的TextView当画面为空,更好地利用延迟加载加载图像。也缓存他们,所以你不必下载evertime – Raghunandan
@Raghunandan我应该怎么做? –
在getView方法中的else语句后移动设置为文本代码 –