0

我有一个有点复杂的问题,即我正在 android 中实现一个列表视图。一个列表项中有近 6 个子项。问题是列表 itemClickListener 由于其中的文本视图而表现不佳。我的意思是在 textview 上它不执行 itemClickListing。所以我认为我必须为每个 TextView 单独实现 clickListeners。现在问题开始了: ListView 的 itemClickListener(它在 Fragment 类里面):

        JournalAdapter adapter = new JournalAdapter(JournalListFragment.activity, R.layout.journal_list_items, journals);

        ListView listView1 = (ListView)JournalListFragment.activity.findViewById(R.id.listView1);
        listView1.setAdapter(adapter);

        listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View view, int pos, long id) {
                Utilities.selectedJnrlId = view.getId() ;

                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.replace(android.R.id.content, new JournalAddUpdateFragment());
                transaction.addToBackStack(null);
                transaction.commit();

            }

        });

我在这里使用了自定义适配器。当我在 listView 上实现 itemClickListener 时;我在一个从片段类扩展的类中。所以我只是替换 listView-itemClickListener 结果中的片段但是当我去另一个类时,即CustomArrayAdapter我不能这样做,因为getFragmentManager()。它给出了一个错误,因为我的 Custom-ArrayAdapter 类确实从 Fragment 类扩展。那么有没有合理的解决方案呢?问候,

4

3 回答 3

0

据我了解,代码没有找到,因为它在您的片段的子类中。

这只是将编译器指向正确的类的简单问题。

你会这样称呼它:

MyFragment.this.getFragmentManager.beginTran...  etc
于 2013-04-08T15:16:21.933 回答
0

我实际上在使用

android:textIsSelectable="true"

在文本视图中。这给我带来了问题。它使文本视图无法点击。原因,我不知道。所以我把它换成了

android:text=""

并且还使用了

android:focusableInTouchMode="false" 
android:focusable="false" 

在文本视图中。在包含这些 TextViews 的 RelativeLayout 中;我用了

android:descendantFocusability="blocksDescendants">

最后,我的列表视图变成了可点击的,只有一个itemClickListener。单独的 TextView 不需要 clickListeners。

于 2013-04-11T21:28:23.073 回答
-1

您可以手动将侦听器绑定到您的视图,而不是使用 ListView 的点击侦听器getView()。唯一的技巧是您需要知道哪个视图触发了点击,但解决方案非常简单 - 使用setTag()并作为标签放置即列表视图的行位置。然后getTag()在单击侦听器中,获取视图的相应行并继续

于 2013-04-08T15:03:48.977 回答