繁体   English   中英

ListView项目打开一个新片段

[英]ListView item open a new fragment

我正在制作一个健身应用,我想在其中进行3个嵌套:

  1. 具有肌肉组项目的ListView
  2. 练习的ListView (何时单击肌肉组ListView
  3. 和运动说明。

像这样的设计:

但是我不知道该怎么实现。 我是否需要为每个项目创建一个新的片段,或者我可以在这里使用ViewPager (如果是,如何执行此操作)? 请给我建议,如何实现此设计(相同结构项目的任何链接或任何其他示例)预先感谢您

这是示例代码包com.sw.gitans201608042027;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

public class MainActivity extends FragmentActivity {
    private static MainActivity mCurrent = null;

    public static MainActivity getInstance() {
        return mCurrent;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mCurrent = this;
        setContentView(R.layout.activity_main);
        switchFragment(new ListFragment());
    }

    public void switchFragment(Fragment f) {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();
        transaction.replace(R.id.container, f);
        transaction.commit();
    }
}

package com.sw.gitans201608042027;

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.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class ListFragment extends Fragment implements OnItemClickListener {

    private String[] contents = { "a", "b" };
    private String[] aArr = { "a1", "a2" }, bArr = { "b1", "b2" };
    private SampleAdapter mAdapter;

    public ListFragment(String[] contents) {
        this.contents = contents;
    }

    public ListFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.lv, container, false);
        mAdapter = new SampleAdapter(getActivity(), contents);
        ((ListView) v.findViewById(R.id.lv)).setAdapter(mAdapter);
        ((ListView) v.findViewById(R.id.lv)).setOnItemClickListener(this);
        return v;
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        if (mAdapter.getItem(arg2) != null) {
            if (((String) mAdapter.getItem(arg2)).equals("a") || ((String) mAdapter.getItem(arg2)).equals("b")) {
                if (((String) mAdapter.getItem(arg2)).equals("a")) {
                    if (MainActivity.getInstance() != null)
                        MainActivity.getInstance().switchFragment(new ListFragment(aArr));
                } else {
                    if (MainActivity.getInstance() != null)
                        MainActivity.getInstance().switchFragment(new ListFragment(bArr));
                }
            } else {
                if (MainActivity.getInstance() != null)
                    MainActivity.getInstance().switchFragment(new TextFragment((String) mAdapter.getItem(arg2)));
            }
        }
    }

}

package com.sw.gitans201608042027;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class SampleAdapter extends BaseAdapter {

    private String[] contents;
    private LayoutInflater mInflater;

    public SampleAdapter(Context ctxt, String[] contents) {
        this.contents = contents;
        mInflater = LayoutInflater.from(ctxt);
    }

    @Override
    public int getCount() {
        if (contents != null)
            return contents.length;
        else
            return 0;
    }

    @Override
    public Object getItem(int position) {
        if (contents == null || position >= contents.length)
            return null;
        else
            return contents[position];
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Holder holder;
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.list_item, null);
            holder = new Holder();
            holder.tv = (TextView) convertView.findViewById(R.id.list_txt);
            convertView.setTag(holder);
        } else
            holder = (Holder) convertView.getTag();
        holder.tv.setText(contents[position]);
        return convertView;
    }

    private class Holder {
        TextView tv;
    }

}

package com.sw.gitans201608042027;

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.TextView;

public class TextFragment extends Fragment {

    private String desc;

    public TextFragment(String s){
        desc = s;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.list_item, container, false);
        ((TextView)v.findViewById(R.id.list_txt)).setText(desc);
        return v;
    }
}

activity_main.xml

    <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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.sw.gitans201608042027.MainActivity" >

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    </RelativeLayout>

list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/list_txt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

lv.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

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

</RelativeLayout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM