我有一个ListView,其中每一行都有三个TextView。出于某种原因,当我滚动ListView时,我无法点击某些行。似乎没有任何特定的模式。我最初认为这是一个焦点问题,所以我添加了一些语句来消除TextViews中的可点击性和焦点,但这还没有解决它。这是我的代码的相关部分:
questionsArrayAdapter = new ArrayAdapter<String>(this, R.id.number, questionsArrayList) {
public View getView(int position, View convertView, ViewGroup parent) {
View row = convertView;
LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (row == null) {
// ROW INFLATION
row = inflater.inflate(R.layout.questionlistitem, parent, false);
}
TextView number = (TextView) row.findViewById(R.id.number);
TextView answer = (TextView) row.findViewById(R.id.answer);
TextView section = (TextView) row.findViewById(R.id.section);
number.setFocusable(false);
number.setClickable(false);
answer.setFocusable(false);
answer.setFocusable(false);
section.setFocusable(false);
section.setClickable(false);
这是questionlistitem.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:visible="false" />
<TextView
android:id="@+id/answer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="right"
android:layout_marginRight="5dip"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingEnd="10dip"
android:paddingStart="6dip"
android:textAppearance="?android:attr/textAppearanceListItemSmall" />
<TextView
android:id="@+id/section"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:visible="true" />
</LinearLayout>
这是我的标准听众:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
System.out.println("got clicked");
}
有谁知道问题可能是什么?
答案 0 :(得分:0)
我认为您认为这是一个问题,而TextViews
正在将焦点从您的点击事件中移开,我认为您正走在正确的轨道上。 I found this discussion of what may be the same problem filed as a bug report for the source,然而这是多年前的事情,官方的话似乎是“按预期工作”。在链接中,两个建议的解决方案似乎在xml中使用android:focusable="false"
上的TextViews
属性(不确定这是否等同于以编程方式执行,如您所尝试的那样)或调用{ <{1}}在setDescendantFocusability(FOCUS_BLOCK_DESCENDANTS);
返回之前。{/ p>
可能导致此问题的其他问题是您的convertView
如何安排在xml文件中。水平TextViews
的孩子通常不应该有LinearLayout
match_parent或fill_parent。这会导致这些视图扩展以填充父视图的长度,可能与其兄弟姐妹重叠,并可能在视觉上和尝试与子项进行交互时单击子项时造成奇怪。您可能需要考虑使用layout_width
属性,或将父级设为layout_weight
,您可以更好地控制视图的位置。