Android大师! 我希望你能帮助我。我有一个包含两个ListView的活动布局。逻辑是当有人在菜单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());
}
});
}
});
答案 0 :(得分:0)
如果您希望其他列表仅在选中“菜单”列表中的元素后才可见,则只需在默认情况下使用可见性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
中将其设置为vsibible:
menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0,
android.view.View arg1, int arg2, long arg3) {
mainList.setVisibility(View.VISIBLE);
}
});
您也可以在上面的监听器中更改适配器内容。
答案 1 :(得分:0)
可能是您的第一个列表不再具有焦点,因此所选项目不再位于第一个列表中。您是否已查看使用支持库并将两个列表实现为两个片段。这样,两个列表上的操作彼此独立,但您仍然可以在第一个列表中设置第二个列表中的值,您的第一个列表也将保留所选项目。