我正在編寫一個應用程序,它具有由活動管理的幾個片段視圖。這些片段基本上是一個帶有一堆圖像的GridView和一個當用戶點擊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();
}