这是主活动中的数组
String[] items = {
"Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5", "Unit 6", "Unit 7",
"Unit 8", "Unit 9", "Unit10", "Unit 11", "Unit 12", "Unit 13"};
ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, items);
这是我想要将该列表加载到片段中的onclick方法。
bt2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, fragmentB);
fragmentTransaction.addToBackStack("");
fragmentTransaction.commit();
我有许多字符串数组,希望为菜单中的每个按钮分配一个。现在我应该把这个代码放在哪里?
ListView listView = (ListView) findViewById(R.id.listview);
listView.setAdapter(adapter);
首先,< code>listview必须是fragment布局的一部分,然后您可以在fragment的< code>onCreateView()方法中编写它。
onCreateView(LayoutInflater inflater, ViewGroup group, Bundle savedInstance){
View v = inflater.inflate(R.layout.fragment_layout, container, false);
String[] items = {"Unit 1", "Unit 2", "Unit 3", "Unit 4", "Unit 5", "Unit 6", "Unit 7", "Unit 8", "Unit 9", "Unit10", "Unit 11", "Unit 12", "Unit 13"};
ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, items);
ListView listView = (ListView) v.findViewById(R.id.listview);
listView.setAdapter(adapter);
return v;
}
列表视图必须位于片段内,如果要通过单击不同的按钮将数据传递到片段,则应执行以下操作:
编辑
重要!
例如,此类仅遵循Android开发中的最佳实践)。
public class MainActivity extends FragmentActivity implements View.OnClickListener{
public static final String LISTVIEW_DATA = "myData";
public static final String DATA_TYPE1 = "DataType1";
public static final String DATA_TYPE2 = "DataType2";
public static final String DATA_TYPE3 = "DataType3";
Bundle bundle = null;
ArrayList<String> items1 = new ArrayList<String>();
ArrayList<String> items2 = new ArrayList<String>();
ArrayList<String> items3 = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set some data to the items
items1 = generateStringData("Unit 1");
items2 = generateStringData("Unit 2");
items3 = generateStringData("Unit 3");
Button btn1 = (Button) findViewById(R.id.button1);
Button btn2 = (Button) findViewById(R.id.button2);
Button btn3 = (Button) findViewById(R.id.button3);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
}
private ArrayList<String> generateStringData(String prefix){
ArrayList<String> temp = new ArrayList<String>();
for (int i = 0; i<10; i++){
temp.add(prefix + i);
}
return temp;
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
bundle = new Bundle();
bundle.putString(MainActivityFragment.DATA_TYPE, DATA_TYPE1);
bundle.putStringArrayList(LISTVIEW_DATA, items1);
break;
case R.id.button2:
bundle = new Bundle();
bundle.putString(MainActivityFragment.DATA_TYPE, DATA_TYPE2);
bundle.putStringArrayList(LISTVIEW_DATA, items2);
break;
case R.id.button3:
bundle = new Bundle();
bundle.putString(MainActivityFragment.DATA_TYPE, DATA_TYPE3);
bundle.putStringArrayList(LISTVIEW_DATA, items3);
break;
default:
break;
}
setListFragment(bundle);
}
private void setListFragment(Bundle arguments){
Fragment fragment = new MainActivityFragment();
if (arguments != null){
fragment.setArguments(arguments);
}
FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, fragment);
fragmentTransaction.addToBackStack("");
fragmentTransaction.commit();
}
当你点击按钮时,这段代码会把片段放在片段上,你可以通过点击后退按钮看到,这不是一个好主意。你应该根据自己的需要修改代码。
为片段设置参数后,必须接收片段内的数据:
public class MainActivityFragment extends Fragment {
public final static String DATA_TYPE = "DataType";
private ArrayList<String> data = new ArrayList<>();
private String dataTag = "";
public MainActivityFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null){
data = getArguments().getStringArrayList(MainActivity.LISTVIEW_DATA);
dataTag = getArguments().getString(DATA_TYPE);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
ListView listView = (ListView) rootView.findViewById(R.id.listView1);
ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
switch (dataTag) {
case MainActivity.DATA_TYPE1:
//here is where you can implement your logic for type 1
break;
case MainActivity.DATA_TYPE2:
//here is where you can implement your logic for type 2
break;
case MainActivity.DATA_TYPE3:
//here is where you can implement your logic for type 3
break;
default:
//do something else
break;
}
}
});
return rootView;
}
希望有帮助。
问题内容: 这里有新用户。我有一部分这样的结构对象: 哪个切片像: 我想知道如何将结果切片转换为类似字符串的切片: 我试图像这样迭代: } 但是我得到: 因此,感谢您的帮助。 问题答案: 对于您的特定情况,我将“手动”执行: 输出: 如果希望它动态遍历所有字段,则可以使用该程序包。一个辅助函数可以做到这一点: 使用它: 输出是相同的: 在Go Playground上尝试示例。
在这个方法中,我有一个字符串数组,即BarchartLabels。我想把这个数组添加到JSOObject中: {“数据”:“[\”一月\“,\”二月\“,\”三月\“,\”四月\“,\”五月\“,\”六月\“,\”七月\“]”}
问题内容: 我在字符串中有一个完整的XML文档,想要一个对象。Google会产生各种垃圾。什么是最简单的解决方案?(在Java 1.5中) 解决方案 感谢Matt McMinn,我决定完成此实现。对我来说,它具有适当级别的输入灵活性和异常粒度。(很高兴知道错误是来自格式错误的XML-还是来自错误的IO- 。) 问题答案: 在Java 1.5中,这对我有效-我去除了一些特殊的可读性。
问题内容: 我想将所有记录上的代码更新为当前的代码,再加上_standard任何想法? 因此,例如,如果代码是apple_1和apple_2,则我需要将它们设置为apple_1_standard和apple_2_standard 前: 伪查询: 预期结果: 问题答案: 您需要在MySQL中使用该函数进行字符串连接:
我在我的应用程序中使用导航栏,每次我选择一个项目时,它都会加载一个片段。 我能够使用相同的文本字段和按钮保存片段的状态,但有一个片段可以加载地图、添加标记、集群并执行。 每次我转到另一个菜单项并返回时,它都会重新加载所有内容,例如AsyncTask、Cluster、Markers。我如何停止此片段以不再重新创建地图并在返回时保存状态: Udate 1:我更新了代码,但问题仍然存在 主要活动: 主片