将onClickListener设置为由自定义适配器填充的LinearLayout

米兰塞特勒

我试图在ScrollView中显示两个列表。我发现以下解决方案:使用ListAdapter填充ScrollView布局内的LinearLayout(用自定义适配器填充LinearLayout)。

此解决方案效果很好,但我不知道如何处理列表项上的click事件。如果我使用ListView(带有位置参数的onItemClick方法),但是LinearLayout不支持相同的功能,那将很简单。

我的布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:scrollbars="none"
android:background="@color/background_gray_light">
<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
// here should be view with infobox, not implemented yet //
<LinearLayout
    android:id="@+id/story_list_inbox"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<TextView
    android:id="@+id/archive"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="8dp"
    android:paddingBottom="8dp"
    android:background="@color/actionbar_bg"
    android:text="@string/archive"
    android:textSize="16dp"
    android:textColor="@color/text_gray"
    android:gravity="center_horizontal" />
<LinearLayout
    android:id="@+id/story_list_archive"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />     
</LinearLayout>         

填充列表:

public class StoryListFragment extends Fragment {   
public StoryListFragment() {}

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_story_list, container,
            false);

    TextView archiveText = (TextView) view.findViewById(R.id.archive);
    archiveText.setText(archiveText.getText().toString().toUpperCase()); 

    final List<Story> storyList = new ArrayList<Story>();
    // filling the list ....

    StoryListAdapter adapter = new StoryListAdapter(getActivity(), R.layout.story_list_item, storyList);        
    LinearLayout inbox = (LinearLayout) view.findViewById(R.id.story_list_inbox);

    final int inboxCount = adapter.getCount();

    for (int i = 0; i < inboxCount; i++) {
      View item = adapter.getView(i, null, null);
      inbox.addView(item);
    }   

    /* archive */   
    // filling the list ....    

    LinearLayout archive = (LinearLayout) view.findViewById(R.id.story_list_archive);

    final int archiveCount = adapter.getCount();

    for (int i = 0; i < archiveCount; i++) {
      View item = adapter.getView(i, null, null);
      archive.addView(item);
    }           

    return view;
}
}

题:

我应该如何使LinearLayout列表项可单击,以便能够获得单击项的索引?

我什至想要达到的目标:

也许我什至没有使用正确的解决方案,我在这里想要实现的目的是创建一个类似于消息收件箱的内容,它由两个列表组成-一个用于最新消息,第二个用于存档消息。我还想在列表顶部显示一些内容,因此我将所有内容都放在ScrollView中。它看起来应该像这样:

在此处输入图片说明

解:

for (int i = 0; i < inboxCount; i++) {
    final int index = i;

    View item = adapter.getView(i, null, null);
    item.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            System.out.println("Clicked " + index);
            startActivity(new Intent(v.getContext(), StoryIntroActivity.class));
        }
    });
    inbox.addView(item);
}
米兰塞特勒

解决方案是将onClickListener设置为动态创建的视图,如下所示:

    for (int i = 0; i < inboxCount; i++) {
        final int index = i;

        View item = adapter.getView(i, null, null);
        item.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                System.out.println("Clicked " + index);
                startActivity(new Intent(v.getContext(), StoryIntroActivity.class));
            }
        });
        inbox.addView(item);
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将onClickListener设置为自定义适配器

来自分类Dev

Android ListView onClickListener自定义适配器

来自分类Dev

在自定义适配器类中使用OnclickListener

来自分类Dev

使用自定义适配器填充GridView的困难

来自分类Dev

在RecyclerView适配器中设置自定义字体

来自分类Dev

Android:使用自定义适配器设置AutoCompleteTextView

来自分类Dev

Android将Arraylist数据设置为自定义适配器

来自分类Dev

无法将片段设置为自定义适配器的列表

来自分类Dev

自定义适配器的问题

来自分类Dev

ListView的自定义适配器

来自分类Dev

自定义ListView的适配器

来自分类Dev

通过onClickListener在自定义适配器中按位置获取数据

来自分类Dev

ListView /自定义数组适配器-调用getView时适配器设置为null

来自分类Dev

使用自定义适配器在ListFragment中填充ParseObject

来自分类Dev

在Android的“自定义适配器”中设置Textview的文本时出现问题

来自分类Dev

在Android中为ArrayList设置自定义适配器

来自分类Dev

如何为随机自定义ListView适配器设置按钮单击事件?

来自分类Dev

如何通过自定义适配器为列表视图动态设置imageView源?

来自分类Dev

列表视图适配器在自定义对话框上设置空对象

来自分类Dev

如何为多选微调器设置自定义适配器?

来自分类Dev

如何在 ListActivity 中设置自定义适配器?

来自分类Dev

具有基本适配器列表项的自定义适配器重复

来自分类Dev

使用自定义适配器中的自定义ArrayList <MyOwnParseClass>在ListView中设置ParseFile图像

来自分类Dev

片段中的自定义阵列适配器

来自分类Dev

Android自定义适配器如何工作?

来自分类Dev

更新Recyclerview的自定义适配器的ViewHolder值

来自分类Dev

从自定义适配器更新menuItem图标

来自分类Dev

为什么自定义适配器需要资源?

来自分类Dev

android:带有自定义适配器的AutoCompleteTextView

Related 相关文章

  1. 1

    将onClickListener设置为自定义适配器

  2. 2

    Android ListView onClickListener自定义适配器

  3. 3

    在自定义适配器类中使用OnclickListener

  4. 4

    使用自定义适配器填充GridView的困难

  5. 5

    在RecyclerView适配器中设置自定义字体

  6. 6

    Android:使用自定义适配器设置AutoCompleteTextView

  7. 7

    Android将Arraylist数据设置为自定义适配器

  8. 8

    无法将片段设置为自定义适配器的列表

  9. 9

    自定义适配器的问题

  10. 10

    ListView的自定义适配器

  11. 11

    自定义ListView的适配器

  12. 12

    通过onClickListener在自定义适配器中按位置获取数据

  13. 13

    ListView /自定义数组适配器-调用getView时适配器设置为null

  14. 14

    使用自定义适配器在ListFragment中填充ParseObject

  15. 15

    在Android的“自定义适配器”中设置Textview的文本时出现问题

  16. 16

    在Android中为ArrayList设置自定义适配器

  17. 17

    如何为随机自定义ListView适配器设置按钮单击事件?

  18. 18

    如何通过自定义适配器为列表视图动态设置imageView源?

  19. 19

    列表视图适配器在自定义对话框上设置空对象

  20. 20

    如何为多选微调器设置自定义适配器?

  21. 21

    如何在 ListActivity 中设置自定义适配器?

  22. 22

    具有基本适配器列表项的自定义适配器重复

  23. 23

    使用自定义适配器中的自定义ArrayList <MyOwnParseClass>在ListView中设置ParseFile图像

  24. 24

    片段中的自定义阵列适配器

  25. 25

    Android自定义适配器如何工作?

  26. 26

    更新Recyclerview的自定义适配器的ViewHolder值

  27. 27

    从自定义适配器更新menuItem图标

  28. 28

    为什么自定义适配器需要资源?

  29. 29

    android:带有自定义适配器的AutoCompleteTextView

热门标签

归档