0

我正在使用一个示例来显示带有图像和文本的列表视图。显示列表花费了太多时间。所以我想要的是使用这个列表作为一个惰性图像列表,这样所有的图像都不会立即加载,而是在用户向下滚动时加载。

public class SetImageText {
public int icon;
public String title;
public SetImageText()
     {
 super();
 }

public SetImageText(int icon,String title)
{
    super();
    this.icon=icon;
    this.title=title;
}
      }

 //Main Class 
         package com.example.customizearrayadapter;
         import android.R.layout;
         public class MainActivity extends Activity {
         private ListView listView1;
      @Override
         public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         SetImageText data[]=new SetImageText[]
        {
         new SetImageText(R.drawable.limage,"Cloudy"),
         new SetImageText(R.drawable.limage,"Showers"),
         new SetImageText(R.drawable.limage,"snow"),
         new SetImageText(R.drawable.limage,"Storm"),
         new SetImageText(R.drawable.limage,"Sunny"),
         new SetImageText(R.drawable.cow, "kriss"),
         new SetImageText(R.drawable.dog,"wazid"),
         new SetImageText(R.drawable.hen, "anuj"),
         new SetImageText(R.drawable.horse, "abhay"),
         new SetImageText(R.drawable.kbc, "abid"),
         new SetImageText(R.drawable.mj ,"aman"),
         new SetImageText(R.drawable.penguine ,"ali"),
        new SetImageText(R.drawable.rat, "hemant"),
        new SetImageText(R.drawable.pizza, "jai"),
        new SetImageText(R.drawable.tortoise ,"kapil")
     };

       SetImageTextArrayAdapter adapter=new        SetImageTextArrayAdapter(this,R.layout.listview_row_item,data);
    listView1=(ListView)findViewById(R.id.listView1);
    View header=(View)getLayoutInflater().inflate(R.layout.listview_header,null);
    listView1.addHeaderView(header);
    listView1.setAdapter(adapter);
}


  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.activity_main, menu);
  return true;
}


     package com.example.customizearrayadapter;
     import java.util.Set;
     import android.app.Activity;
     import android.content.Context;

    public class SetImageTextArrayAdapter  extends ArrayAdapter<SetImageText>{

Context context;
int layoutResourceId;
SetImageText data[]=null;

public SetImageTextArrayAdapter(Context context, int layoutResourceId,
        SetImageText[] data) {
    super(context, layoutResourceId, data);
    this.layoutResourceId=layoutResourceId;
    this.context=context;
    this.data=data;
    // TODO Auto-generated constructor stub
}
public View getView(int position,View convertView,ViewGroup parent)
{
     View row = convertView;
        SetImageTextHolder holder = null;

        if(row == null)
        {
            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            row = inflater.inflate(layoutResourceId, parent, false);

            holder = new SetImageTextHolder();
            holder.imgIcon = (ImageView)row.findViewById(R.id.imgIcon);
            holder.txtTitle = (TextView)row.findViewById(R.id.txtTitle);

            row.setTag(holder);
        }
        else
        {
            holder = (SetImageTextHolder)row.getTag();
        }
        SetImageText setimagetext = data[position];
        holder.txtTitle.setText(setimagetext.title);
        holder.imgIcon.setImageResource(setimagetext.icon);

        return row;



}



static class SetImageTextHolder
{
    ImageView imgIcon;

    TextView txtTitle;
}

       }
4

3 回答 3

1

首先,在图像视图中放置一些虚拟图像。一旦准备好,您就可以使用异步任务加载图像。

于 2013-12-18T10:28:09.920 回答
0

您可以使用Picasso Library等库从可绘制文件夹中加载图像。

我假设您正在使用自定义适配器来加载图像和文本列表。在适配器的 getView() 方法中使用下面的代码片段。

Picasso.with(context).load(R.drawable.name_of_your_image).into(imageView1);

希望你会发现这很有帮助。

此致!

于 2013-12-18T10:34:03.187 回答
0

在这种情况下,您需要 volley 库来处理任何类似的内容FILE,DRAWBLE......

按链接..这个例子解决了drawable的问题

于 2013-12-18T11:27:03.363 回答