我刚刚在Eclipse中创建了一个主/细节流程,我想知道如何点击特定项目时我可以让我的主列表在Master部分中打开一个不同的列表?我不希望列表在详细信息部分中打开。我已经查看了整个www,但无法找到相关的教程。
"第一个列表"点击时会打开列表A.
"第二个清单"点击后会打开列表B.
"第3个清单"点击时会打开列表C.
MainContent.java
package com.apptacularapps.exitsexpertlondonlite.content;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.view.View;
import android.widget.ListView;
public class MainContent {
public static List<MainItem> ITEMS = new ArrayList<MainItem>();
public static Map<String, MainItem> ITEM_MAP = new HashMap<String, MainItem>();
static {
addItem(new MainItem("1", "1st list"));
addItem(new MainItem("2", "2nd list"));
addItem(new MainItem("3", "3rd list"));
}
private static void addItem(MainItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}
public static class MainItem {
public String id;
public String content;
public MainItem(String id, String content) {
this.id = id;
this.content = content;
}
@Override
public String toString() {
return content;
}
}
}
错误1
package com.apptacularapps.exitsexpertlondonlite.content;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.os.Bundle;
import android.view.View;
import android.widget.ListView;
public class MainContent {
public static List<MainItem> ITEMS = new ArrayList<MainItem>();
public static Map<String, MainItem> ITEM_MAP = new HashMap<String, MainItem>();
static {
addItem(new MainItem("1", "1st list"));
addItem(new MainItem("2", "2nd list"));
addItem(new MainItem("3", "3rd list"));
}
private static void addItem(MainItem item) {
ITEMS.add(item);
ITEM_MAP.put(item.id, item);
}
public static class MainItem {
public String id;
public String content;
public MainItem(String id, String content) {
this.id = id;
this.content = content;
}
@Override
public String toString() {
return content;
}
}
public void onItemSelected(String id) {
Bundle arguments = new Bundle();
arguments.putString(MasterListFragment.ARG_ITEM_ID, id);
MasterListFragment fragment = new MasterListFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.master_list_container, fragment).commit();
}
}
错误2
答案 0 :(得分:1)
您需要将主片段替换为包含您要显示的列表的片段。
假设你有这样的事情:
@Override
public void onItemSelected(String id) {
Bundle arguments = new Bundle();
arguments.putString(MasterListFragment.ARG_ITEM_ID, id);
MasterListFragment fragment = new MasterListFragment();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction()
.replace(R.id.item_detail_container, fragment).commit();
}
所以而不是
.replace(R.id.item_detail_container, fragment).commit();
你会打电话
.replace(R.id.master_list_container, fragment).commit();
其中R.id.master_list_container
是包含您的主人<FrameLayout>
的容器(例如ListFragment
)。
查看截图,我认为您需要将<fragment>
中的activity_item_list.xml
替换为<FrameLayout android:id="master_list_container">
,然后按照上面提到的步骤进行操作。
您还需要通过添加类似
的内容将原始主文件ListFragment
放置到位
getSupportFragmentManager().beginTransaction()
.replace(R.id.master_list_container, new ItemListFragment()).commit();
在onCreate()
的{{1}}。