tipos Tengo un problema con mi lista de lista. Funciona tan lento cuando se puede desplazar alguien puede ayudarme. Mi vista de lista es diseño personalizado usando relativa con 3 textview y 1 imageview cada fila con todo el contenido es recuperar de la web. Uso un adaptador personalizado y un titular de vista.android lista de visualización personalizada muy lenta cuando se desplaza
a continuación son mis códigos sobre cómo uso el adaptador.
public class MessageList extends ListActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.listarticle);
loadFeed(link);
setListAdapter(new IconAdapter(this));
}
/* This method load xml file and parse it into message object*/
private void loadFeed(String link){
try{
BaseFeedParser parser = new BaseFeedParser(link);
messages = parser.parse();
titles = new ArrayList<String>(messages.size());
image = new ArrayList<String>(messages.size());
date_post = new ArrayList<String>(messages.size());
descs = new ArrayList<String>(messages.size());
for (Message msg : messages){
titles.add(msg.getTitle());
image.add(msg.getImageLink().toString());
date_post.add(msg.getDate());
descs.add(msg.getDescription());
}
} catch (Throwable t){
Log.e("AndroidNews",t.getMessage(),t);
}
}
/*this is my custom baseadapter */
class IconAdapter extends BaseAdapter{
private LayoutInflater mInflater;
public IconAdapter(Context cxt){
mInflater = LayoutInflater.from(cxt);
}
public class ViewHolder{
private TextView title;
private TextView date;
private TextView desc;
private ImageView thumb;
}
public View getView(int positiion, View convertView, ViewGroup parent){
ViewHolder holder;
if (convertView==null){
convertView = mInflater.inflate(R.layout.row, null);
holder = new ViewHolder();
holder.title = (TextView) convertView.findViewById(R.id.title);
holder.date = (TextView) convertView.findViewById(R.id.date);
holder.desc = (TextView) convertView.findViewById(R.id.deskripsi);
holder.thumb = (ImageView) convertView.findViewById(R.id.thumbnail);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
holder.title.setText(titles.get(positiion));
holder.date.setText(date_post.get(positiion));
holder.desc.setText(descs.get(positiion).substring(0, 55)+"...");
Drawable draw = LoadImageFromWebOperation(image.get(positiion));
holder.thumb.setImageDrawable(draw);
return convertView;
}
/* this method take image from url that retrieve from xml*/
public Drawable LoadImageFromWebOperation(String url){
try{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e){
Log.d("image", url, e);
return null;
}
}
@Override
public int getCount() {
return messages.size();
}
@Override
public Object getItem(int position) {
return messages.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
}
Edite y formatee el código en su pregunta para comprender mejor su problema. –
thx. eliminé un código Espero que puedas entender el problema – Rahadyanteja
@Raha, en tu constructor, haz todas tus solicitudes URL y guárdalas en una matriz, en el 'getView' no las cargues nuevamente ... eso lo acelerará. – st0le