如何在ListFragment中触发onListItemClick

时间:2011-12-23 02:16:15

标签: android listview android-fragments

在我的应用程序的平板电脑布局中,我有三个ListFragments和一个常规Fragment,我们称之为Make,Model,Size和Details。最初填充Make列表,然后根据Make选择,填充Model列表;选择模型时,将填充“大小”列表;选择“大小”时,将显示“详细信息”。这些事件中的每一个(列表项选择)都是通过onListItemClick处理程序处理的。

在启动时,我想填充Make列表,选择列表中的第一个Make并让它通过onListItemClick处理程序来填充Model列表(依此类推,以便填充所有列表并显示详细信息 - 这也应该是在任何列表中进行任何选择时的行为 - 选择下一个列表中的第一个项目,直到我们显示详细信息)。请注意,我可以控制数据库,对于每个Make,总会有至少一个Model,每个Make / Model至少有一个Size,每个Make / Model / Size只有一个Detail。

所以,我想选择列表中的第一项并让它触发onListItemClick处理程序。我尝试了以下(使用适当的边界检查等),但它不起作用。

getListView().setItemChecked(0, true);

对“开箱即用”ListFragment的唯一更改是将CacheColorHint设置为

getListView().setCacheColorHint(R.color.GhostWhite);

其中GhostWhite在styles.xml中设置为

<color name="GhostWhite">#88FFFFFF</color>

有什么想法吗?

提前致谢。

5 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:1)

答案 2 :(得分:1)

1。)在列表片段的OnActivityCreated中创建一个类似的接口

public interface ListItemSelectedListener {
        public void onListItemSelected(int index);
}

2.。)在您的活动中实施界面 3.)在列表片段中创建private ListItemSelectedListener selectedListener 4.)在OnActivityCreated中设置selectedListener.onListItemSelected(0)

这就是我使用Android支持包的方式 - 应该与HC类似

答案 3 :(得分:1)

尝试添加此功能,它适用于我的项目:

@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);
}

答案 4 :(得分:1)

onActivityCreated(Bundle savedInstanceState)方法的Fragment类中,您可以添加以下内容:

@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());
            }
        }
    }