我的适配器上有一个有点奇怪的错误。适配器正在创建的视图是左侧的缩略图和包含几行的表格。每行有两个文本视图。
其中一个文本视图具有android: autoLink="web"
属性集,并且列表视图上有一个onItemClickListener。
问题是每次TextView自动链接它的内容时,下一次它的父视图被转换时,它不再接收来自onItemClickListener的点击。
让我用一个例子来澄清:
文本视图的自动链接功能确实改变了我的布局,但我不知道是什么。在我的适配器上,必须有一个我可以为每次getView调用重置的属性,但是是哪个呢?
感谢您的任何帮助。
编辑
让我们看看一些代码,这是非常标准/良好的实践。从我的适配器获取视图是: @Override 公共视图 getView(整数位置, 视图转换视图, 视图组父级) {
// Inflate a new layout if needed
if (convertView == null)
convertView = createNewView();
// Gets the item from my array
AGplus item = (AGplus) getItem(position);
// Gets the holder pointing to the views
Holder h = (Holder) convertView.getTag();
// That's a test version, I won't be using date.toString() later on
h.date.setText(new Date(item.getDate()).toString());
// This guys is giving me a headache,
// If it parses the link, I can't never click on this convertView anymore,
// event re-converting them for a text that does not contain links
h.txt.setText(item.getTitle());
// some image download stuff that doesn't matter for this code
return convertView;
}
所使用的布局是一个图像和表格,我在表格上充气和插入的行数因适配器而异。表格布局是带有图像视图的水平线性布局,表格布局带有一些边距内容,以下是行布局:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/text" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:autoLink="web"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="@color/text" />
</TableRow>
如果我完全删除android: autoLink="web"
,我会得到所有点击,但如前所述,一旦一个视图被“自动链接”,然后我回收该视图,我就无法再次点击该视图。
编辑
这是布局膨胀:
private View createNewView() {
// Instantiate view
View v = getLayoutInflater().inflate(R.layout.expandable_child_view, null);
TableLayout table = (TableLayout) v.findViewById(R.id.table);
Holder h = new Holder();
v.setTag(h);
// Instantiate rows
h.thumb = (ImageView) v.findViewById(R.id.img);
h.date = (TextView) createNewRow(table, "Date: ");
h.txt = (TextView) createNewRow(table, "Text: ");
return v;
}
private View createNewRow(ViewGroup group, String title) {
View row;
row = getLayoutInflater().inflate(R.layout.item_table_row, null);
((TextView) row.findViewById(R.id.title)).setText(title);
group.addView(row);
return row.findViewById(R.id.text);
}
在别人问之前,这是expandable_child_view布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="5dp"
android:layout_marginTop="20dp"
android:src="@drawable/ic_launcher" />
<TableLayout
android:id="@+id/table"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
</LinearLayout>
正如我之前所说,只是一个线性布局,一个imageview和一个表格和一些空白。
我想我知道发生了什么。当你使用setText()时,有时会删除很多东西。您可能需要使用ClickableSpan将链接操作放回到textview中。
根据Romain Guy的说法,这是为了支持轨迹球/dpad导航而设计的。注释27有一个解决方法,通过在每个listview项目上设置后代焦点可用性:
setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
或
android:descendantFocusability="blocksDescendants"
我使用JavaFX ListView作为聊天应用程序的聊天室主体。当消息到来或正在发送时,我会添加到listview。这很好,但我总是不得不滚动找到最新的消息。有没有任何方法,我可以自动滚动到底部,以便显示最新的消息,而不必一直向下滚动?
问题内容: 我有两个ListView要滚动在一起的对象。它们 并排放置,因此,如果一个滚动一定数量,则另一个滚动相同 数量。我已经找到了一些有关如何执行此操作的示例,但我相信它们 依赖于ListView高度相同的项目(如果我 错了,请纠正我)。我的一个ListView对象中的项目比另一个对象中的项目高 ,跨越2-3个项目。 如何将这两个对象“锁定”在一起? 编辑:这是我所拥有的屏幕截图,也许它将更
我的问题:我的ListView中的一个项目在我开始滚动后会动画。它不是最后一项,动画应该完成。一旦问题消失,我滚动后,它只发生一次,并且只发生在列表中的单个项目上。 在我开始滚动ListView之后,如何停止单个项目的动画制作? 我希望在将项目添加到适配器时,动画仅运行一次。 我有一个列表适配器,当项目添加到列表中时,我在其中对它们进行动画处理。我正在使用声明的动画器在适配器的getView()方
我用了这个尺寸的盒子,似乎还是有错误。 这是我的小部件树:SingleChildScrollView- 医生总结(查看所有细节,运行颤动医生-v): 颤动(频道beta,v0.4.4,Mac OS X 10.13.1 17B1003,语言环境en-HK) [✓] Android工具链-为Android设备开发(Android SDK 26.0.2) iOS工具链-为iOS设备开发(Xcode 9.
我使用的是底部导航栏,每个菜单将用户导航到特定的可组合屏幕。我使用了导航库来管理它们之间的导航。 我正在为所有可组合使用通用的ViewModel。我正在其中一个可组合中使用懒惰列,当我在底部导航栏中单击菜单项在菜单项之间导航时,它会按预期工作,在懒惰列的滚动位置保存的位置。 当我在具有一个lazyColumn的可组合屏幕中单击按钮(我已经将它编程为导航到导航图中的起始目的地)并导航回该按钮时,问题
我有一个包含我的数据的listView,但我需要能够按下向上滚动的按钮(如果listView可以向上滚动)和向下滚动的按钮(如果listView可以向下滚动),而不是使用滚动条滚动 listView可以转到的最大Y位置 listView滚动到的当前Y位置 使用这些值,我可以编写其余的代码。