如何在片段中实现ListView

时间:2015-01-20 18:14:01

标签: listview android-fragments android-activity android-listfragment

我有以下问题。我有一个名为OverviewActivity的Activity,它的布局实现了一些ImageButtons。当我点击ImageButton" Profile" OverviewActivity将导致"领先"我来了一个名为" ProfileActivity_2"的活动。我在那里实现了三个Scrolltabs。代码如下所示

public class ProfileActivity_2 extends FragmentActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile_scrolltabs);

    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);

    FragmentManager fragmentManager = getSupportFragmentManager();

    viewPager.setAdapter(new AdapterTab(fragmentManager));
}

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.chat, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.action_chat:
        Intent mailbox = new Intent(this, MailboxListActivity.class);
        startActivity(mailbox);
        return true;
    }
    return true;
}

public static FragmentProfile newInstance(String username) {
    FragmentProfile f = new FragmentProfile();
    // Supply index input as an argument.
    Bundle args = new Bundle();
    args.putString("username", username);
    f.setArguments(args);
    return f;
}

}

class AdapterTab extends FragmentPagerAdapter {

public AdapterTab(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int i) {

    Fragment fragment = null;

    if (i == 0) {
        fragment = new FragmentProfile();
    }
    if (i == 1) {
        fragment = new FragmentBorrowed();
    }
    if (i == 2) {
        fragment = new FragmentLent();
    }
    return fragment;
}

@Override
public int getCount() {
    return 3;
}

@Override
public CharSequence getPageTitle(int position) {

    String title = new String();

    if (position == 0) {
        return "Profil";
    }
    if (position == 1) {
        return "geliehene Bücher";
    }
    if (position == 2) {
        return "verliehene Bücher";
    }
    return null;
}

}

所以,到目前为止一切正常。正如您所看到的,我有三个选项卡,每个选项卡都包含一个名为FragmentProfile,FragmentBorrowed和FragmentLent的Fragment。所以第一个"屏幕"或者第一个选项卡保留FragmentProfile。当我切换到第二个选项卡(FragmentBorrowed)时,还有两个选项卡。代码如下所示。

public class FragmentBorrowed extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_borrowed_tab2, container,
            false);
}

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    TabHost tabhost = (TabHost) getView()
            .findViewById(android.R.id.tabhost);

    tabhost.setup();
    Resources res = getResources();

    TabSpec spec1 = tabhost.newTabSpec("tab1");
    spec1.setContent(R.id.tab1);
    spec1.setIndicator(res.getString(R.string.tablabel1));
    tabhost.addTab(spec1);

    TabSpec spec2 = tabhost.newTabSpec("tab2");
    spec2.setContent(R.id.tab2);
    spec2.setIndicator(res.getString(R.string.tablabel2));
    tabhost.addTab(spec2);

}
}

现在我将回答我的实际问题。在FragmentBorrowed的这两个选项卡中,我想为每个选项卡实现一个ListView。所以当我点击第一个标签时会有一个ListView,当我点击第二个标签时,我会得到一个不同的ListView。我已经尝试了很多东西,观看了很多教程,并通过stackoverflow论坛阅读如何在片段中实现ListView但我无法找到解决我的问题的方法。我试图在FragmentBorrowed中调用一个新的Activity,但是这没有按照我的预期工作,因为当我点击ImageButton" Profile"我之前提到的,只有当我切换到第二个选项卡(FragmentBorrowed)时才想启动新的Activity。

有人能帮助我吗?

PS。:我想向您展示应用程序的一些图像,但stackoverflow不允许它;)

1 个答案:

答案 0 :(得分:0)

您的ProfileActivity_2必须扩展ListFragment。如果你想要一些示例代码来搜索它或回复我。