При скроллинге GridView в нем картинки долго догружается (это касается прокрутки вверх и вниз), я использую асинхроную загрузку где получаю Integr ссылки на картинки и заношу их в ArrayList после всех манипуляций с потоком я в конце вызываю адаптер и передаю ArrayList в качестве аргумента. В адаптере я создаю ViewHolder в котором есть только одно изображение, получаю ссылку на него и заполняю с помощью Picasso.
Для наглядности вот гифка https://psv4.userapi.com/c848428/u71582166/docs/d7/1442578ff25e/20190210_230821.gif?extra=f7gnB6LLjdzKinhy4SrFWh4hVxHPlXu8mbMJWpPMOaviBYv_CraDd93S-K_I_D5CbVg3gW9eRFDjUSvRkk-6epeAAZOop3DbMLP4X3ZWR9ba8WvkT28UfYXJlQ1Wuo7KR-uEE63Ylqb1Mpy028W9smfu
MainActivity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GlobalStatic.setContext(this);
GlobalStatic.setFromBD("Item");
GlobalStatic.setNumColumns(3);
GlobalStatic.setRootView(getWindow().getDecorView().getRootView());
AsyncTaskReadItemsDB asyncTaskReadItemsDB = new AsyncTaskReadItemsDB();
asyncTaskReadItemsDB.execute();
}
}
ImageAdapter
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<Integer> mData;
public ImageAdapter(Context c, ArrayList<Integer> data) {
mContext = c;
this.mData = data;
mInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return mData.size();
}
public Object getItem(int position) {
return mData.get(position);
}
public long getItemId(int position) {
return position;
}
LayoutInflater mInflater;
static class ViewHolder {
ImageView iconImageView;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.item_item, null);
holder = new ViewHolder();
holder.iconImageView = convertView.findViewById(R.id.imageView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//holder.iconImageView.setImageResource(mData.get(position));
Log.e("App","Картинка" + position);
Picasso.get().load(mData.get(position)).placeholder(R.drawable.nocat).error(R.drawable.nocat).into(holder.iconImageView);
return convertView;
}
}
AsyncTaskReadItemsDB
public class AsyncTaskReadItemsDB extends AsyncTask<Void, Void, ArrayList<Integer>> {
private SQLiteDatabase mDb;
private ImageAdapter adapter;
private Context myContext;
private View rootView;
private String FromBD;
private String WhereBD;
private String LikeBD;
private Integer NumColumns;
@Override
protected void onPreExecute() {
myContext = GlobalStatic.getContext();
LikeBD = GlobalStatic.getLikeBD();
FromBD = GlobalStatic.getFromBD();
WhereBD = GlobalStatic.getWhereBD();
NumColumns = GlobalStatic.getNumColumns();
rootView = GlobalStatic.getRootView();
DatabaseHelper mDBHelper = new DatabaseHelper(myContext);
try {
mDBHelper.updateDataBase();
} catch (IOException mIOException) {
throw new Error("UnableToUpdateDatabase");
}
try {
mDb = mDBHelper.getWritableDatabase();
} catch (SQLException mSQLException) {
throw mSQLException;
}
super.onPreExecute();
}
@Override
protected ArrayList<Integer> doInBackground(Void... params) {
ArrayList<Integer> data = new ArrayList<>();
Cursor cursor = mDb.rawQuery("SELECT * FROM " + FromBD + "", null);
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
data.add(myContext.getResources().getIdentifier(cursor.getString(0), "drawable", myContext.getPackageName()));
cursor.moveToNext();
}
cursor.close();
return data;
}
@Override
protected void onPostExecute(ArrayList<Integer> result) {
GridView gridview = rootView.findViewById(R.id.gridview);
gridview.setNumColumns(NumColumns);
adapter = new ImageAdapter(myContext, result);
gridview.setAdapter(adapter);
gridview.setOnItemClickListener(gridViewOnItemClickListener);
super.onPostExecute(result);
}
private GridView.OnItemClickListener gridViewOnItemClickListener = new GridView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
Intent intent = new Intent(myContext, MainActivity.class);
intent.putExtra("item name", String.valueOf(adapter.getItem(position)));
myContext.startActivity(intent);
}
};
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Всем привет,есть приложение с авторизацией в ВК,сохраняю данные в SharedPreferences при логине,и на второй активити пытаюсь их поймать:
Я хочу связать BottomNagation и NagationViewНо "Run" выдает следующее
Создать программу, в которой выводятся все положительные целые числа, сумма цифр которых равна заданному значениюИспользовать потоки данных
Ошибку обнаружил в Гугл Плее, на устройтве или в эмуляторе у меня всё работает отличноВот что пишется в гугл плее