- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一名新的 Android 开发人员,我尝试创建一些旅游应用程序"
在我的应用程序中,我有 HomeFragment,它有 3 个按钮:“景点”“事件”“酒店”
public class HomeFragment extends Fragment implements View.OnClickListener {
private ArrayList<Category> mAttractions= new ArrayList<>();
private ArrayList<Category> mEvents= new ArrayList<>();
private ArrayList<Category> mHotels= new ArrayList<>();
private int mAttractionsBtnId = R.id.attractions_btn;
private int mEventsBtnId = R.id.events_btn;
private int mHotelsBtnId = R.id.hotels_btn;
public HomeFragment() {
// Required empty public constructor
}
public void initCategoriesData() {
// init attraction array list
mAttractions.add(new Category("Jaffa Port",5,R.drawable.attractions_jaffa_port));
mAttractions.add(new Category("Beit Hatfusot",5,R.drawable.attractions_beit_hatfutsot));
mAttractions.add(new Category("Independence Hall",5,R.drawable.attractions_independence_hall));
mAttractions.add(new Category("Jaffa Bazar",5,R.drawable.attractions_jaffa_bazar));
mAttractions.add(new Category("Neve Tzedek St",5,R.drawable.attractions_neve_tzedek));
mAttractions.add(new Category("Rothschild Boulevard St",5,R.drawable.attractions_rothschild_boulevard));
// init Events array list
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
// init Hotels array list
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_home, container, false);
// Initiate data for each category
initCategoriesData();
// Find Buttons
Button attractionsBtn = (Button)view.findViewById(R.id.attractions_btn);
Button hotelsBtn = (Button)view.findViewById(R.id.hotels_btn);
Button eventsBtn = (Button)view.findViewById(R.id.events_btn);
// Set buttons OnClickListener
attractionsBtn.setOnClickListener(this);
hotelsBtn.setOnClickListener(this);
eventsBtn.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
// Start new Fragment when Button Clicked
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction().addToBackStack(null);
Bundle bundle = new Bundle();
// Pass the right data in the bundle
switch (v.getId()){
case R.id.attractions_btn:
bundle.putSerializable("Data",mAttractions);
break;
case R.id.hotels_btn:
bundle.putSerializable("Data",mHotels);
break;
case R.id.events_btn:
bundle.putSerializable("Data",mEvents);
break;
}
ArrayList<Category> cat = (ArrayList<Category>)bundle.getSerializable("Data");
int size = cat.size();
MasterFragment masterFragment = new MasterFragment();
masterFragment.setArguments(bundle);
fragmentTransaction.replace(R.id.fragment_container, masterFragment);
fragmentTransaction.commit();
}
因为所有的内容都是一样的(只是类别名称不同)我决定使用 MasterFragment 以避免重复每个类别的代码。
所有“数据”都在 HomeFragment 中创建,每次用户单击其中一个按钮时,应用程序都会创建新的 MasterFragment 并将 Bundle 中的数据发送给他,以便让他知道他需要哪些数据以显示。
这是“MasterFragment”的样子:
public class MasterFragment extends Fragment {
private ArrayList<Category> mData;
public MasterFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle bundle) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.item_list, container, false);
mData = (ArrayList<Category>)getArguments().getSerializable("Data");
// Create an {@link WordAdapter}, whose data source is a list of {@link Category}s. The
// adapter knows how to create list items for each item in the list.
CategoryAdapter adapter = new CategoryAdapter(getActivity(), mData, R.color.colorAccent);
// Find the {@link ListView} object in the view hierarchy of the {@link Activity}.
// There should be a {@link ListView} with the view ID called list, which is declared in the
// word_list.xml layout file.
ListView listView = (ListView) rootView.findViewById(R.id.list);
// Make the {@link ListView} use the {@link WordAdapter} we created above, so that the
// {@link ListView} will display list items for each {@link Word} in the list.
listView.setAdapter(adapter);
return rootView;
}
一切正常,当用户点击例如 AttractionButton 时,应用程序显示的内容很棒(只有设计不好,哈哈)但!!当我单击“后退按钮”并返回到 HomeFragment 时然后再次单击 AttractionButton 它会复制 Arraylist(从 6 项到 12 项等等……)
我通过在“initCategoriesData”方法中初始化 ArrayList 变量解决了这个问题
但我还是不明白为什么这个应用会像她那样做我很欣赏对此的一个很好的解释,它真的会帮助我更好地理解事情的运作方式
提前致谢,Niv :)
最佳答案
因为你的 fragment 没有被破坏,当你回来的时候,你的数组列表已经有 6 个项目(因为 fragment 没有被重新创建)。所以你也添加了 6 个项目,arraylist 大小变为 12。你可以做这样的事情来解决这个问题。
private ArrayList<Category> mAttractions;
private ArrayList<Category> mEvents;
private ArrayList<Category> mHotels;
public void initCategoriesData() {
//initialize array list here
mAttractions= new ArrayList<>()
mEvents= new ArrayList<>();
mHotels= new ArrayList<>();
// init attraction array list
mAttractions.add(new Category("Jaffa Port",5,R.drawable.attractions_jaffa_port));
mAttractions.add(new Category("Beit Hatfusot",5,R.drawable.attractions_beit_hatfutsot));
mAttractions.add(new Category("Independence Hall",5,R.drawable.attractions_independence_hall));
mAttractions.add(new Category("Jaffa Bazar",5,R.drawable.attractions_jaffa_bazar));
mAttractions.add(new Category("Neve Tzedek St",5,R.drawable.attractions_neve_tzedek));
mAttractions.add(new Category("Rothschild Boulevard St",5,R.drawable.attractions_rothschild_boulevard));
// init Events array list
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
mEvents.add(new Category("cacdas",3));
// init Hotels array list
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
mHotels.add(new Category("hotels",3));
希望对你有帮助。
关于java - ArrayList 每次返回 fragment 时将他的大小加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52605376/
我正在使用Mapbox开发 map 应用程序。 我正在使用的方法使用Point(Double,Double) 获取类型不匹配要求:两次发现:两次? val lat = location
我想将 System.out 消息写入另一个 OutputStream,但我仍然想要标准输出。 我找到了类似问题的答案Copy and Redirecting System.err Stream :
我正在尝试为我正在处理的排序找到所有处理器的全局最小值和最大值。我正在尝试使用 MPI_Reduceall int rank, nproc; MPI_Comm_size(MPI_COMM_WORLD,
我想知道从一种可空类型转换为另一种“兼容”可空类型的最佳方式(从更安全和简洁的意义上说)是什么。 具体来说,从十进制转换?加倍?可以使用: public double? ConvertToNullab
我的一个表的文件大小(.MYD 文件)增加了大约 100%。如果我查看数据,就会发现过去几天的每日负载正常。是什么导致文件大小增加? myisamchk 根据用户的建议,我尝试了sudo myisam
我有一个 invoices 表。每张发票都有许多 invoice_items 和 transactions(或者,如果您愿意,也可以是“付款”)。对于每张发票,我想计算已支付金额(即其交易金额的总和)
我需要一个尽可能接近 0 的值。我需要能够除以这个值,但实际上它应该为 0。 Java 是否提供了一种简单的方法来生成仅设置最低有效位的 double ?还是必须自己计算? //编辑:一些背景信息,因
由于 Math.random ()(以及大多数伪随机数生成器,AFAIK)在 [0,1) 中生成数字: function randomInRange(min, max) { return Math
这应该很容易。相信我,我已经为此研究了几个小时。我的查询: SELECT not_piece.pid, part.name AS 'Part Name', SUM(qty_left) AS 'In S
我正在尝试传递类型为 vector > 的变量到函数 F(double ** mat, int m, int n) . F 函数来自另一个库,所以我无法更改它。有人可以给我一些提示吗?谢谢。 最佳答案
我正在尝试读取一个文件,读取它包含的字节数,然后将其四舍五入到最接近的 GB,然后将文件大小加倍。但是,有没有办法读取文件,然后将所有这些东西重新放入同一个文件中? 这是我目前所拥有的,但它创建了一个
我正在尝试传递类型为 vector > 的变量到函数 F(double ** mat, int m, int n) . F 函数来自另一个库,所以我无法更改它。有人可以给我一些提示吗?谢谢。 最佳答案
我想对超大 (200+ MB) Sqlite 文件进行一些测试。我有一些相对较小的文件 (10MB),但我想测试更大的文件。 有没有什么快速的方法/工具可以通过复制表中的数据来增加这些 Sqlite
我有一个 64 位数字,写成两个 32 位未签名的整数:unsigned int[2]。 unsigned int[0] 是 MSB,unsigned int[1] 是 LSB。我如何将它转换为 do
我需要将数量的值传递给库进行评估。 boost units library在 SI 中采用双倍值,因此 boost 单位库在确保该要求方面非常有吸引力。但是,我应该如何将数量转换为双倍值?文档和示例似
如何向 ksoap2 请求添加双重属性? request.addProperty("doubleProperty", 1.0); 网络上没有明确的答案。 最佳答案 为了将 double 值作为请求参数
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 7 年前。 Improve this qu
我正在尝试从 AngularJS 用 Swing 编写的 REST API 生成 .bin 文件。以下是代码。 var options = { url: 'http://example.com/i
我对这段代码中的特定值集有疑问。 double inputs[] = {0, -546543, 99015, 6750, 825, 2725, 70475, 50950, 42200, 675
我在 ruby on rails 应用程序中尝试为密码生成盐时遇到了 SecureRandom#hex 方法。为什么它会加倍长度参数/坚持返回的字符串长度是偶数? 最佳答案 该方法生成一个 n 字
我是一名优秀的程序员,十分优秀!