Как показывать в папке ленивый список изображений
Я использую пример, чтобы показать представление списка с изображением и текстом. Отображение списка занимает слишком много времени. Поэтому я хочу использовать этот список как список отложенных изображений, чтобы все изображения загружались не сразу, а по мере прокрутки пользователей вниз.
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;
}
}
3 ответа
В этой ситуации вам нужна библиотека залпов для работы любого контекста, подобного FILE,DRAWBLE
так далее...
Во-первых, поместите какое-нибудь фиктивное изображение в вид изображения. И вы можете использовать задачу Async для загрузки изображений, как только она будет готова.
Вы можете использовать библиотеку, например библиотеку Picasso, для загрузки изображений из папки для рисования.
Я предполагаю, что вы используете пользовательский адаптер для загрузки списка изображений и текстов. Используйте фрагмент кода ниже в методе getView() вашего адаптера.
Picasso.with(context).load(R.drawable.name_of_your_image).into(imageView1);
Надеюсь, вы найдете это полезным.
С наилучшими пожеланиями!