0

安卓大师!我想请你帮帮我。我有一个包含两个 ListViews 的活动布局。逻辑是当有人在菜单 ListView 中选择一个项目时,第二个 ListView 会填充一些也可点击的项目。我使用嵌套的 setOnItemClickListener 实现了它。顶部侦听器绑定到菜单 ListView 项。嵌套侦听器在填充后绑定到第二个 ListView。当我不进行嵌套时,就可以了。菜单 ListView 向我显示当前选定的项目。如果我做嵌套。除了一件事,一切都很好。我的菜单 ListView 丢失了当前项目选择标记。怎么了?我需要菜单 ListView 中的当前选择。代码如下。

menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> arg0,
  android.view.View arg1, int arg2, long arg3) {
    mainList = (ListView) findViewById(R.id.listView2);
    aaMainList = new cArrayAdapter(this, R.layout.mainlistitem, ALfiles);
    mainList.setAdapter(aaMainList);
    mainList.setOnItemClickListener(new AdapterView.OnItemClickListener(){          
      @Override
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        lounchFileInDefaultVewer("file:/"+ ALfiles.get(arg2).getAbsolutePath());
        Log.d("ssapp", items[arg2].getAbsolutePath());
      }
    });
  }
});
4

2 回答 2

0

如果您希望仅在选择“菜单”列表中的元素后才能看到另一个列表,只需将其默认设置为 visibility GONE,在第一个之外执行所有这些操作OnItemClickListener

    final ListView mainList = (ListView) findViewById(R.id.listView2);
    aaMainList = new cArrayAdapter(this, R.layout.mainlistitem, ALfiles);
    mainList.setAdapter(aaMainList);
    mainList.setOnItemClickListener(new AdapterView.OnItemClickListener(){          
      @Override
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        lounchFileInDefaultVewer("file:/"+ ALfiles.get(arg2).getAbsolutePath());
        Log.d("ssapp", items[arg2].getAbsolutePath());
      }
    });

并且只在第一个中设置它OnItemClickListener

menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> arg0,
  android.view.View arg1, int arg2, long arg3) {
    mainList.setVisibility(View.VISIBLE);
  }
});

您还可以更改上述侦听器中的适配器内容。

于 2012-04-10T11:14:39.257 回答
0

可能是您的第一个列表不再具有焦点,因此所选项目不再位于第一个列表中。您是否查看过使用支持库并将两个列表实现为两个片段。这样,两个列表上的操作相互独立,但您仍然可以从第一个列表开始设置第二个列表的值,您的第一个列表也将保留所选项目。

http://developer.android.com/sdk/compatibility-library.html

于 2012-04-10T12:21:29.053 回答