Am einen Basisadapter verwenden, die die untergeordneten Ansichten für das Raster erstellen und die Halter Ansicht mehr als ein anklickbares Steuerelement jeweils eine Aktion ausführen .GridView mit Basis-Adapter reagiert nicht auf den ersten Klick auf das erste Element in der GridView, bis ich blättern
hier ist die getView() -Methode Code
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.book_item_to_download, parent, false);
convertView.setFocusable(true);
convertView.setClickable(true);
holderGridView = new BooksViewHolder();
holderGridView.BookImage = (ImageView) convertView.findViewById(R.id.bookBackground);
holderGridView.BookName = (TextView) convertView.findViewById(R.id.bookName);
holderGridView.BookItemWraper = (LinearLayout) convertView.findViewById(R.id.book_item_wraper);
holderGridView.BookDownload=(ImageView) convertView.findViewById(R.id.download);
holderGridView.BookProgress=(CircularProgressBar) convertView.findViewById(R.id.demo_mpc);
Typeface custom_font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Isra-Thin.ttf");
holderGridView.BookName.setTypeface(custom_font);
convertView.setTag(holderGridView);
} else {
holderGridView = (BooksViewHolder) convertView.getTag();
}
holderGridView.BookItemWraper.setLayoutParams(new android.widget.AbsListView.LayoutParams((int) Math.round(ScreenWidth/2.1), (int) Math.round(ScreenHeight/2.5)));
holderGridView.BookImage.setImageDrawable(getResources().getDrawable(R.drawable.book_background));
holderGridView.BookName.setText(bookCovers.get(position).getBookTitle());
ImageView image = holderGridView.BookImage;
//DisplayImage function from ImageLoader Class
imageLoader.DisplayImage(bookCovers.get(position).getBookImageURL(), image);
if(bookCovers.get(position).isDownloaded)
{
holderGridView.BookDownload.setVisibility(View.GONE);
holderGridView.BookProgress.setVisibility(View.GONE);
holderGridView.BookItemWraper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for(int i=0;i<app.bis.size();++i)
{
if(app.bis.get(i).identifier.equals(bookCovers.get(position).getBookID()+""))
{
openBookViewer(app.bis.get(i));
break;
}
}
}
});
}
else if(bookCovers.get(position).isDownloading)
{
holderGridView.BookDownload.setVisibility(View.GONE);
holderGridView.BookProgress.setVisibility(View.VISIBLE);
holderGridView.BookProgress.setProgress(bookCovers.get(position).downloadProgress);
holderGridView.BookItemWraper.setOnClickListener(null);
}
else {
holderGridView.BookDownload.setVisibility(View.VISIBLE);
holderGridView.BookProgress.setVisibility(View.GONE);
holderGridView.BookItemWraper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent openDetails = new Intent(getActivity(), WaitingBookDetails_Activity.class);
openDetails.putExtra(Constants.BOOK_COVER, Parcels.wrap(bookCovers.get(position)));
startActivity(openDetails);
}
});
holderGridView.BookDownload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new downloadEPUB_Task(bookCovers.get(position), position).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
});
}
return convertView;
}
wenn der Gridview zuerst initialisieren, wenn ich in dem Halter auf jede Kontrolle auf dem ersten Punkt klicken sieht es wird nicht antworten, bis ich das Gridview scrollen Hinweis leicht,: nur der erste Klick auf das erste Element beim ersten Öffnen der App, die restlichen Klicks sind in Ordnung und verwenden LazyLoading, um Bilder in die ImageView in der Halteransicht zu laden, und die Scrollleistung ist auch auf langsamen Geräten großartig, daher ist es keine Gedächtnisstütze Ich vermute. Vielen Dank im Voraus für jede Hilfe.
es hat nicht funktioniert und ich bearbeiten nun meine Frage, weil ich, dass nur die erste Punkt im Netz entdeckt hat Dieses Verhalten, fühlen Sie sich frei, Ihre Antwort zu bearbeiten, wenn Sie es jetzt –
Ich hatte den Code bearbeiten werden Sie bitte versuchen Sie es mit. –
es dint arbeiten und wie Sie sehen holderGridView.BookItemWraper haben unterschiedliche onClickListener je nach dem Stand des Buches, so kann ich es nicht aus dem else entfernen, obwohl ich es versuchte und nicht funktioniert. Trotzdem danke –