Android onListItemClick不会(始终)使用ListActivity调用

Android onListItemClick不会(始终)使用ListActivity调用,android,listactivity,Android,Listactivity,我使用了一个ListActivity来显示一个视图,它是从xml布局文件中膨胀出来的。当我最初在列表中显示此视图时,我通过将目标视图的visible属性设置为view.GONE来隐藏视图的一部分。在方法onListItemClick中,我将此“隐藏”视图的可见性设置为view.GONE(如果可见)。下一次单击时,我想再次隐藏视图。为此,我检测视图的可见性,并将其更改为view.GONE(如果是view.VISIBLE) 当隐藏视图的visibility os view.GONE并在单击时正确显示

我使用了一个ListActivity来显示一个视图,它是从xml布局文件中膨胀出来的。当我最初在列表中显示此视图时,我通过将目标视图的visible属性设置为view.GONE来隐藏视图的一部分。在方法onListItemClick中,我将此“隐藏”视图的可见性设置为view.GONE(如果可见)。下一次单击时,我想再次隐藏视图。为此,我检测视图的可见性,并将其更改为view.GONE(如果是view.VISIBLE)

当隐藏视图的visibility os view.GONE并在单击时正确显示隐藏视图时,我的代码执行方法onListItemClick。但是,当视图的可见性设置为view.VISIBLE时,它不会执行onListItemClick方法

我知道这种情况很适合使用ExpandableListActivity,但由于其他无法解决的问题,我无法使用它

以下是部分相关代码:

public class MyListActivity extends ListActivity implements OnClickListener {
// images that depict whether part of the view is visible or not
private Drawable imgUp, imgDown;

    private class MyOrderAdapter extends ArrayAdapter<Order> {

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    View v = convertView;
            if (v == null) {
        LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        // infalte this view from xml
        v = vi.inflate(R.layout.brief_order, null);

        // display down arrow key depicting that more is available to be
        // displayed when a user clicks on it.
        ImageView arrow = (ImageView) v.findViewById(R.id.imgArrow);

        // get a reference to the table layout for details
        // which should not be displayed initially
        TableLayout tb = (TableLayout) v.findViewById(R.id.view_detail);

        // DO NOT DISPLAY PART OF THE VIEW INITIALLY    
        tb.setVisibility(View.GONE);
    }

    // code to initialize the text filed values in the view v
    return v;
    }


    // onListItemClick
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);

        Log.d("MyList", "item click called");

        // RETRIEVE THE detail view
        TableLayout tb = (TableLayout) v.findViewById(R.id.view_detail);
    if(tb.getVisibility() == View.GONE) { 
        tb.setVisibility(View.VISIBLE);
        img.setImageDrawable(imgUp);
    }
    else {
        img.setImageDrawable(imgDown);
        tb.setVisibility(View.GONE);
    }
}

// rest of the code
}
谢谢


干杯

但为了以防万一,您必须将ListView中的图像和其他项目设置为不可聚焦,并且将调用onListItemClick方法