Android Fragment List和GridView

时间:2012-01-25 10:31:14

标签: android android-fragments

我尝试在蜂窝,列表和gridview中制作两个片段。当我单击列表项时,GridView成功显示。但是,列表消失了.GridView应该显示在列表旁边。这是我的代码:

FragmentTestActivity.java

package com.android.tabgrid;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class FragmentTestActivity extends FragmentActivity implements
OnItemClickListener {          

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    ListView lv = (ListView)findViewById(R.id.list_icon);
    ArrayAdapter<String> yoyo = new ArrayAdapter<String>(getApplicationContext(),
            android.R.layout.simple_list_item_1,new String[] {
        "Traffic",
        "Forum",
        "Promo",
        "Others"
    });
    lv.setAdapter(yoyo);
    lv.setOnItemClickListener(this);
}


@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    // TODO Auto-generated method stub
    Fragment f = new TestFragment(position+1);

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace(R.id.the_frag,f);
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
    ft.addToBackStack(null);
    ft.commit();

}
}

TestFragment.java

package com.android.tabgrid;

import com.android.content.GridView1;

import android.content.Context;
import android.content.Intent;
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.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;

public class TestFragment extends Fragment {

private int magznumber;

public TestFragment() {

}
public TestFragment(int position) {
    this.magznumber = position;
}

@Override
public void onCreate(Bundle saved) {
    super.onCreate(saved);
    if (null != saved) {
        magznumber = saved.getInt("magznumber");
    }
}

@Override
public void onSaveInstanceState(Bundle toSave) {
    toSave.putInt("magznumber", magznumber);
}

/**
 * Make a grid to view the magazines 
 */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle saved) {

    Context c = getActivity().getApplicationContext();

    LinearLayout l = new LinearLayout(c);
    LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,    
 LayoutParams.FILL_PARENT, 0);

    l.setLayoutParams(params);

    ImageView i = new ImageView(c);

    switch(magznumber){
    case 1:
        Intent i1 = new Intent(getActivity(), GridView1.class);
        startActivity(i1);
        break;
    case 2:
        i.setImageResource(R.drawable.lfymag);
        break;
    case 3:
        i.setImageResource(R.drawable.ffymag);
        break;
    }

    l.addView(i);

    return l;
  }
 }

GridView1.java

package com.android.content;

import com.android.tabgrid.FragmentTestActivity;
import com.android.tabgrid.R;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import com.android.tabgrid.TestFragment;

public class GridView1 extends FragmentActivity{

Integer[] img = {
    R.drawable.btn_spot_u,
    R.drawable.btn_traffic_u,
    R.drawable.btn_forum_u,
    R.drawable.btn_promo_u
};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.content_1);

    GridView gV = (GridView)findViewById(R.id.grid1);
    gV.setAdapter(new ImageAdapter(this));

}

public class ImageAdapter extends BaseAdapter {

    private Context ctx;

    public ImageAdapter(Context c) {
        ctx = c;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return img.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView imgView;
        if(v == null) {
            imgView = new ImageView(ctx);
            imgView.setLayoutParams(new GridView.LayoutParams(85,85));
            imgView.setScaleType(ImageView.ScaleType.CENTER_CROP);
            imgView.setPadding(5, 5, 5, 5);
        } else {
            imgView = (ImageView) v;
        }
        imgView.setImageResource(img[position]);
        return imgView;
        }   
        }
        }

请帮助我并修复mycode.big谢谢

0 个答案:

没有答案