首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android Studio中的ListFragment

Android Studio中的ListFragment
EN

Stack Overflow用户
提问于 2015-03-18 15:08:15
回答 2查看 13.3K关注 0票数 4

我正在浏览在线教程,试图了解ListFragment是如何工作的,以及我们如何使用它。

教程有点含糊,我不能确切地理解它是如何工作的,我也不能在Android Studio上实现一个ListFragment。

谁能提供一个ListFragment如何工作和我如何在Android Studio上实现它的细节。

另外,如何在不使用ListFragment的情况下在片段中定义ListView?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-18 15:21:15

关于最后一个问题:

另外,如何在不使用ListFragment的情况下在片段中定义ListView?

我有可能会有帮助的代码。

以下是MainActivity.java,其中包含一个片段:

代码语言:javascript
复制
    public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new MusicFragment())
                    .commit();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            Intent i = new Intent(this, SettingsActivity.class);
            startActivity(i);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class MusicFragment extends Fragment {

        ListView list;
        String[] text = { "House of Whispers","Hot Lunch", "Number of the Beast", "Killers"};
        Integer[] imageId = { R.drawable.hotlunch1, R.drawable.hotlunch2,
                R.drawable.ironmaiden1, R.drawable.ironmaiden2 };

        public MusicFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container, false);

            list = (ListView) rootView.findViewById(R.id.ListView);
            CustomAdapter adapter = new CustomAdapter(getActivity() , text, imageId );
            list.setAdapter(adapter);

            Log.d("CustomAdapter", "MusicFragment onCreateView successful");

            return rootView;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);


        }

    }
}

fragment_main.xml:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context=".MainActivity$PlaceholderFragment">

    <ListView
        android:id="@+id/ListView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >
    </ListView>

</RelativeLayout>

编辑:根据要求,以下是CustomAdapter:

代码语言:javascript
复制
public class CustomAdapter extends ArrayAdapter<String> {
    private final Activity _context;
    private final String[] _text;
    private final Integer[] _imageId;

    public CustomAdapter(Activity context, String[] text, Integer[] imageId) {
        super(context, R.layout.list_item, text);
        this._context = context;
        this._text = text;
        this._imageId = imageId;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = _context.getLayoutInflater();
        View rowView = inflater.inflate(R.layout.list_item, null, true);
        TextView txtTitle = (TextView) rowView.findViewById(R.id.text);
        ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
        txtTitle.setText(_text[position]);
        imageView.setImageResource(_imageId[position]);

        return rowView;
    }

}
票数 4
EN

Stack Overflow用户

发布于 2015-03-18 15:17:12

ListFragment和ListActivity是一样的--它只是一个片段,扩展了List方法。您只需添加包含ListView的片段,并实现list方法所需的所有内容,就像在Activity中一样。你可以找到一个很好的教程here,它解释了如何使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29116031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档