【问题标题】:ListActivity onListItemClick, ListView has zero childrenListActivity onListItemClick,ListView 有零个孩子
【发布时间】:2011-10-19 02:10:41
【问题描述】:

我遇到了 ListActivity 的问题。

onListItemClick 方法需要访问 ListView 的子视图,以便在选择不正确的答案时突出显示正确答案。这种逻辑通常可以正常工作。但问题是,如果我走得太快,即只是在显示列表时不加选择地在显示器上敲打,不久之后 ListView 将在 onListItemClick 中返回 0 个子项,并且程序将在生成的空视图上崩溃。我的调试语句显示,当发生这种情况时,用于填充 ListView 的数组已正确初始化,包含预期的所有四个项目。

附加信息:当用户响应时,我正在将数据写入 AsyncTask 内的数据库。当我禁用它时,问题似乎消失了。我将 ApplicationContext 的子类传递给它,但线程没有其他数据是通用的。

这是用于填充 ListView 的数组:

ArrayList<String> myArrayList = new ArrayList<String>();

该数组列表填充在代码中,并声明如下:

String[] myAnswerArray = new String[4];

ListView 适配器在以下代码摘录中设置:

    myArrayList.clear();
    myArrayList.addAll(Arrays.asList(myAnswerArray));


    // attach the adapter to the ListView 
    setListAdapter(myStringArrayAdapter);

MyStringArrayAdapter 扩展了 ArrayAdapter,为了完整起见,此处显示:

public class MyStringArrayAdapter extends ArrayAdapter<String> {
    private Typeface font;
    private static final String TAG = "MyStringArrayAdapter";

    public MyStringArrayAdapter(Context context, int textViewResourceId,
            ArrayList<String> answerArray, Typeface font) {
        super(context, textViewResourceId, answerArray);

        this.font = font;
    }

    @Override
    public View getView(int position, View view, ViewGroup viewGroup) {
        View v = super.getView(position, view, viewGroup);
        ((TextView) v).setTypeface(font);
        return v;
    }
}

一旦问题开始出现,我就添加了代码来检查零个孩子。这是我检查的方法:

@Override
protected void onListItemClick(ListView listView, View listItemView,
        int position, long id) {

    super.onListItemClick(listView, listItemView, position, id);

    int childCount = listView.getChildCount();

    // Workaround on bug raised by monkey exerciser

    if (childCount == 0) {

           Log.d(TAG, "No children found in ListView")

        }    

        // etc...

同样,这个问题只有在我在触摸屏上快速敲击时才会发生,而且锻炼者猴子偶尔但并不总是会产生这个我试过等待它被填充,在循环中使用 Thread.sleep 和重新检索子计数,但这没有区别。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: android listview


    【解决方案1】:
    猜你喜欢
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多