关于Udacity课程中的Android代码的问题

时间:2015-07-31 02:14:20

标签: android xml listview

我对以下代码有几个问题。如果你花时间回答它们,那就太棒了。

mForestAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_forecast, R.id.list_item_forecast_textview, weekForecast);。对象mForestAdapter有四个参数。我对前三个参数感到困惑。

  1. getActivity()是什么意思,它做了什么,为什么在这里使用?
  2. 教程表明我应该在名为list_item_forecast.xml的布局部分下创建一个新的xml。它被用作第三个参数。我不确定为什么。为什么要创建这个新的xml?
  3. 第三个参数是list_item_forecast.xml内的textView的id。这个textView有什么作用?这个textView有什么影响?我尝试在这里更改xml代码,它只是清除预览中的所有内容。
  4. ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast); rootView引用了什么,为什么需要它?

    代码如下:

    package com.example.android.sunshine.app;
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    
    import java.util.ArrayList;
    import java.util.Arrays;
    
    
    /**
     * A placeholder fragment containing a simple view.
     */
    public class MainActivityFragment extends Fragment {
    
        public MainActivityFragment() {
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);
    
            ArrayAdapter<String> mForestAdapter;
            String[] forecastArray = {
                    "Today - Sunny - 88/63",
                    "Tomorrow - Foggy - 70/46",
                    "Wednesday - Cloudy - 72/63",
                    "Thurs - Rainy - 64/51",
                    "Fri - Foggy - 70/46",
                    "Sat - Sunny - 76/68",
                    "asdf",
                    "asdfqwer",
                    "qeprij",
                    "qpweirj,"
    
            };
    
            ArrayList<String> weekForecast = new ArrayList<String>(Arrays.asList(forecastArray));
    
            mForestAdapter = new ArrayAdapter<String>(getActivity(), R.layout.list_item_forecast, R.id.list_item_forecast_textview, weekForecast);
    
            ListView listView = (ListView) rootView.findViewById(R.id.listview_forecast);
            listView.setAdapter(mForestAdapter);
    
            return rootView;
        }
    

2 个答案:

答案 0 :(得分:0)

我不知道你对android开发了解多少。 “getActivity()”是Fragment的一个方法,因为ArrayAdapter构造函数需要传递“Context”而调用它。

我猜“list_item_forecast.xml”是每个列表元素的布局。这不是必须的,但如果这样,你可以从这个xml“膨胀”每个列表元素。

如果您对此无法理解,首先应使用Google的文档:

http://developer.android.com/guide/index.html

http://developer.android.com/guide/components/activities.html

http://developer.android.com/guide/components/fragments.html

然后阅读列表适配器及其功能。祝你好运

答案 1 :(得分:0)

如果您可以针对每个问题阅读Android参考,那将会很酷。对于ArrayAdapter,您可以参考here

ArrayAdapter有6个构造函数,您可以根据自己的设计和要求进行选择。这与你的问题有关。

  

public ArrayAdapter(Context context,int resource,int textViewResourceId,T [] objects)

     

参数

     

上下文当前上下文。

     

资源包含在实例化视图时使用的布局的布局文件的资源ID。

     

textViewResourceId 要填充的布局资源中TextView的ID

     

对象要在ListView中表示的对象。