gpt4 book ai didi

Android webview导致点击监听器不触发

转载 作者:太空狗 更新时间:2023-10-29 13:32:49 27 4
gpt4 key购买 nike

我有一个包含文章列表的 ListView。每 X 篇文章(目前 10 篇),我都有一个显示广告的 WebView。除了显示 WebView 的那个列表项之外,我可以单击任何列表项。那个不会记录我的点击。

显示或隐藏 WebView 的代码:

if(position % 10 == 0) // || position == 0) && position > 0
{
viewHolder.adView.loadUrl(tmpAdURL);
viewHolder.adView.setVisibility(View.VISIBLE);
}
else
{
viewHolder.adView.setVisibility(View.GONE);
viewHolder.adView.invalidate();
}

ma​​in.xml

<ListView android:id="@+id/articles_list"
style="@style/ListView"
android:fadingEdge="vertical"
android:fadingEdgeLength="16dp"
android:divider="@color/extreme_light_gray"
android:dividerHeight="1dp" />

MainActivty.java 的 onCreate() 中的监听器:

articleEntryListView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int position, long id)
{
Log.d("MINE", "ARTICLE CLICKED");
}
}

article_entry_list_item.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:minHeight="60dp" >

<!-- Title of the news entry -->

<ImageView
android:id="@+id/article_thumbnail"
android:layout_width="90dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:adjustViewBounds="true"
android:contentDescription="@string/articleThumbnail"
android:cropToPadding="true"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:paddingLeft="0.5dp"
android:scaleType="centerCrop" />
<!-- WAS: android:padding="0.5dp" -->



<LinearLayout
android:id="@+id/article_row"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/article_thumbnail"
android:minHeight="80dp"
android:orientation="vertical"
android:padding="10dp" >

<TextView
android:id="@+id/article_title"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleTitle"
android:textColor="@drawable/list_title_selector"
android:textSize="14sp"
android:textStyle="bold" />

<TextView
android:id="@+id/article_subtitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/articleSubtitle"
android:textColor="@drawable/list_subtitle_selector"
android:textSize="10sp" />
</LinearLayout>

<WebView
android:id="@+id/article_ad"
android:layout_width="match_parent"
android:layout_height="90dp"
android:background="@color/meddark_gray"
android:layout_below="@+id/article_thumbnail"
android:layout_centerHorizontal="true"
android:layout_marginTop="10dp"
android:padding="10dp" />

</RelativeLayout>

最佳答案

使用单行布局是在浪费资源。想一想:您在所有行中创建了一个 WebView,但是您立即(超过)90% 的时间隐藏了它们……相反,您应该通过覆盖这些方法来使用具有两行布局的自定义适配器:

@Override
public int getItemViewType(int position) {
return position % 11 == 0 ? 1 : 0;
}

@Override
public int getViewTypeCount() {
return 2;
}

接下来在 getView()newView() 中检查您应该加载哪种类型的布局。当 getItemViewType() 返回 0 时扩充新闻项目布局,并在返回 1 时扩充 WebView(通过自身)。

除了速度更快、更有条理之外,您的 WebView 现在有了自己的行,应该会很好用。

关于Android webview导致点击监听器不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com