Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在ListFragment中触发onListItemClick_Android_Listview_Android Fragments - Fatal编程技术网

Android 如何在ListFragment中触发onListItemClick

Android 如何在ListFragment中触发onListItemClick,android,listview,android-fragments,Android,Listview,Android Fragments,在我的应用程序的平板电脑布局中,我有三个ListFragments和一个常规片段,让我们称它们为Make、Model、Size和Details。首先填充制作列表,然后根据制作选择填充模型列表;选择模型后,填充尺寸列表;选择尺寸后,将显示详细信息。每个事件列表项选择都通过onListItemClick处理程序处理 启动时,我想填充制造列表,选择列表中的第一个Make,并让它通过onListItemClick处理程序填充模型列表,依此类推,以便填充所有列表并显示详细信息-这也是在任何列表中进行任何选

在我的应用程序的平板电脑布局中,我有三个ListFragments和一个常规片段,让我们称它们为Make、Model、Size和Details。首先填充制作列表,然后根据制作选择填充模型列表;选择模型后,填充尺寸列表;选择尺寸后,将显示详细信息。每个事件列表项选择都通过onListItemClick处理程序处理

启动时,我想填充制造列表,选择列表中的第一个Make,并让它通过onListItemClick处理程序填充模型列表,依此类推,以便填充所有列表并显示详细信息-这也是在任何列表中进行任何选择时的行为-在下一个列表中选择第一个项,直到我们开始显示详细信息。请注意,我可以控制DB,对于每个品牌,总是至少有一个模型,对于每个品牌/模型,至少有一个尺寸,对于每个品牌/模型/尺寸,只有一个细节

因此,我想选择列表中的第一项,并让它触发onListItemClick处理程序。我已经尝试了以下适当的边界检查等,但它不工作

getListView().setItemChecked(0, true);
对开箱即用ListFragment的唯一更改是将CacheColorHint设置为这样

getListView().setCacheColorHint(R.color.GhostWhite);
其中,ghostwite在styles.xml中设置为

<color name="GhostWhite">#88FFFFFF</color>
有什么想法吗


提前感谢。

请尝试设置选择位置


1。在列表片段的OnActivityCreated中,创建一个如下所示的接口

public interface ListItemSelectedListener {
        public void onListItemSelected(int index);
}
二,。在活动中实现接口 3.在列表片段中创建私有ListItemSelectedListener selectedListener 4.在OnActivityCreated中设置selectedListener.onListItemSelected0


这就是我使用Android支持包时的工作方式-在HC上应该类似,尝试添加这个,它在我的项目中工作:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);
    Intent intent = new Intent();
    intent.setClass(getActivity(), someActivity.class);
    startActivity(intent);
}
在onActivityCreatedBundle savedInstanceState方法中的片段类中,可以添加以下内容:

@Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        //if the parent is in the landscape, make the first item selected
        if (getActivity().getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
            try {
                if (mItems.size() > 0) {
                    //notify the activity that an item is selected
                    mListener.onMasterItemSelected(mItems.get(0));
                }
            } catch (Exception e) {
                Log.e("exception", e.toString());
            }
        }
    }

要选择列表中的第一项,请首先通过触摸获得焦点,然后选择第一项,然后触发onclick处理程序

int position = 0;
getListView().requestFocusFromTouch();
getListView().setSelection(position);
getListView().performItemClick(getListView().getAdapter().getView(position, null, null), position, position);

它看起来确实应该工作,但对我来说不起作用。当我试图在ListView上应用clickListener并试图在滚动时滚动ListView时,是否有人能告诉我我的应用程序崩溃了这里是我的问题,我已经问了,但没有得到任何解决方案。这个难题唯一缺少的部分是将此代码放置在何处。它在onActivityCreated中完美工作。确保执行super.onActivityCreatedsavedInstanceState;或者没有快乐。我在onViewCreated中尝试了它,但没有得到列表,只有右侧视图。