Я пишу приложение, в котором есть несколько видов фрагментов, управляемых действием.Фрагменты в основном представляют собой GridView с кучей изображений и подробным представлением, которое запускается, когда пользователь нажимает на изображение в GridView.
Это все работает нормально, за исключением того, что существует множество других вещей, идущих от действия к фрагменту сетки (я постоянно добавляю вещи в представление сетки и отображаю их сразу), это занимает несколько секунд длящелчок, чтобы быть распознанным.Я предполагал, что создание образа будет занимать много времени, и что, когда я нажимаю на элемент, это событие должно быть немедленно отправлено в действие, так как в этом нет большой нагрузки.Как только сообщение попадает в действие, действие прекращает обновлять представление сетки и работает над созданием подробного представления.
Проблема здесь в том, что для щелчка по элементу в виде сетки требуется несколько секунд (от 5 до 10 на более медленном телефоне) для регистрации.Что мне нужно сделать, чтобы ускорить это действие?
Соответствующий код GridFragment:
public class GridFragment extends Fragment{
...
public class ImageAdapter extends BaseAdapter {
private GridContent gridContent;
private Context mContext;
...
public View getView(final int position, View convertView, ViewGroup parent) {
// ImageView is my private holder class
ImageView imageView;
imageView = new ImageView(mContext);
imageView.setImageBitmap(gridContent.get(position).getThumb());
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// This is what I expect to see immediately upon clicking something,
// but takes several seconds to show up in logcat
if (Constants.DEBUG){ Log.d(TAG, "an item was clicked - "
+ gridContent.get(position).getId());}
//mListener is a listener implemented by my activity
// gridContent.get(position) just returns a small object,
// it shouldn't be doing much work
mListener.onItemSelected(gridContent.get(position));
}
});
return imageView;
}
}
}
Соответствующий код активности:
@Override
public void onItemSelected(Item item) {
// Displays a loading dialog
showLoadDialog();
Item pi = item;
// This builds an image from the web, it might be slow depending on the
// phone's connection
pi.genImage();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
hideLoadDialog();
ft.addToBackStack(Constants.DETAILS_STACK)
.add(android.R.id.content, DetailsFragment.newInstance(0,pi))
.commit();
}