在标签布局中添加gridview

时间:2015-05-05 05:51:58

标签: android eclipse android-gridview

我想在当前项目的标签布局中添加gridview布局有什么方法可以添加它或者用我当前的代码来扩充它吗?

这是我目前的mainactivity.java:

package id.WKKR.ktcafe;

import tabs.SlidingTabLayout;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBarActivity;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v7.widget.Toolbar;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ImageSpan;

@
SuppressWarnings("deprecation")
public class MenuUtama extends ActionBarActivity {

  GridView myGridView;
  Toolbar toolbar;
  private ViewPager mPager;
  private SlidingTabLayout mTabs;@
  Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu_utama);

    toolbar = (Toolbar) findViewById(R.id.app_bar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setHomeButtonEnabled(true);
    NavDrawerFragment drawerFragment = (NavDrawerFragment) getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
    drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawer_layout), toolbar);

    mPager = (ViewPager) findViewById(R.id.MyPager);
    mPager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));

    mTabs = (SlidingTabLayout) findViewById(R.id.MyTabs);
    mTabs.setDistributeEvenly(true);
    mTabs.setCustomTabView(R.layout.custom_tab_view, R.id.tabsText);
    mTabs.setBackgroundColor(getResources().getColor(R.color.orange));
    mTabs.setSelectedIndicatorColors(getResources().getColor(R.color.brown));

    mTabs.setViewPager(mPager);

  }

  @
  Override
  public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.menu_utama, menu);
    return true;
  }

  @
  Override
  public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
      Toast.makeText(this, "This Is " + item.getTitle() + " Button", Toast.LENGTH_SHORT).show();
      return true;
    }

    if (id == R.id.bill) {
      startActivity(new Intent(this, BillTagihanAnda.class));
    }

    if (id == R.id.pesanan) {
      startActivity(new Intent(this, DaftarPesananAnda.class));
    }

    if (id == R.id.callwaiter) {
      startActivity(new Intent(this, PanggilPelayan.class));
      finish();
    }
    return super.onOptionsItemSelected(item);
  }

  class MyPagerAdapter extends FragmentPagerAdapter {

    int icon[] = {
      R.drawable.ic_food, R.drawable.ic_drink, R.drawable.ic_desserts
    };
    String[] tabsText = getResources().getStringArray(R.array.tabs);

    public MyPagerAdapter(FragmentManager fm) {
      super(fm);
      tabsText = getResources().getStringArray(R.array.tabs);
    }

    @
    Override
    public Fragment getItem(int position) {
      MyFragment myFragment = MyFragment.getInstance(position);
      return myFragment;
    }

    @
    Override
    public CharSequence getPageTitle(int position) {
      Drawable drawable = getResources().getDrawable(icon[position]);
      drawable.setBounds(0, 0, 40, 40);
      ImageSpan imageSpan = new ImageSpan(drawable);
      SpannableString spannableString = new SpannableString(" ");
      spannableString.setSpan(imageSpan, 0, spannableString.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

      return spannableString;
    }

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

  }

  public static class MyFragment extends Fragment {
    private TextView textView;

    public static MyFragment getInstance(int position) {
      MyFragment myFragment = new MyFragment();
      Bundle args = new Bundle();
      args.putInt("position", position);
      myFragment.setArguments(args);
      return myFragment;
    }

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

      View layout = inflater.inflate(R.layout.my_fragment, container, false);
      textView = (TextView) layout.findViewById(R.id.position);
      Bundle bundle = getArguments();
      if (bundle != null) {
        textView.setText("The Page Selected is " + bundle.getInt("position"));
      }

      return layout;
    }
  }
}

这就是标签布局的样子,它会显示从数组中显示当前位置的textview http://i59.tinypic.com/9jopyc.jpg[/IMG]

感谢任何想要帮助的人。

所以我已经添加了gridview,现在我试图用图像和textview来扩展gridview,我正在使用看起来像这样的适配器,但老实说我不知道​​如何让它工作:

public static class MyFragment extends Fragment {
  private TextView textView;
  private GridView myGridView;

  public static MyFragment getInstance(int position) {
    MyFragment myFragment = new MyFragment();
    Bundle args = new Bundle();
    args.putInt("position", position);
    myFragment.setArguments(args);
    return myFragment;
  }

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

    View layout = inflater.inflate(R.layout.my_fragment, container, false);
    textView = (TextView) layout.findViewById(R.id.position);
    myGridView = (GridView) layout.findViewById(R.id.gridView);
    Bundle bundle = getArguments();
    if (bundle != null) {
      textView.setText("The Page Selected is " + bundle.getInt("position"));
    }

    return layout;
  }
}

class Menus {
  int imageId = 0;
  String menus = "";
  String menusPrices = "";

  Menus(int imageId, String menus, String menusPrices) {
    this.imageId = imageId;
    this.menus = menus;
    this.menusPrices = menusPrices;
  }
}


//the adapter which inflate the gridview content
class MyCafe extends BaseAdapter {

  ArrayList < Menus > list;
  Context context;

  MyCafe(Context context) {
    this.context = context;
    list = new ArrayList < Menus > ();
    Resources res = context.getResources();
    String[] tempMenusNames = res.getStringArray(R.array.food);
    String[] tempMenusPrices = res.getStringArray(R.array.foodprices);
    int[] menusImages = {
      R.drawable.makanana, R.drawable.makananb,
        R.drawable.makananc, R.drawable.makanand,
        R.drawable.makanane, R.drawable.makananf
    };
    for (int i = 0; i < 6; i++) {
      Menus tempMenus = new Menus(menusImages[i], tempMenusNames[i],
        tempMenusPrices[i]);
      list.add(tempMenus);
    }

  }

  public int getCount() {
    // TODO Auto-generated method stub
    return list.size();
  }

  public Object getItem(int i) {
    // TODO Auto-generated method stub
    return list.get(i);
  }

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

  class ViewHolder {
    ImageView myMenus;
    TextView myMenusText;
    TextView MyMenusPrice;

    ViewHolder(View v) {
      myMenus = (ImageView) v.findViewById(R.id.imageView1);
      myMenusText = (TextView) v.findViewById(R.id.textView1);
      MyMenusPrice = (TextView) v.findViewById(R.id.textView2);
    }
  }

  public View getView(int i, View view, ViewGroup viewGroup) {
    // TODO Auto-generated method stub
    View row = view;
    ViewHolder holder = null;
    if (row == null) {
      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      row = inflater.inflate(R.layout.single_item, viewGroup, false);
      holder = new ViewHolder(row);
      row.setTag(holder);
    } else {
      holder = (ViewHolder) row.getTag();
    }

    Menus temp = list.get(i);
    holder.myMenus.setImageResource(temp.imageId);
    holder.myMenusText.setText(temp.menus);
    holder.MyMenusPrice.setText(temp.menusPrices);

    return row;
  }
}

1 个答案:

答案 0 :(得分:2)

R.layout.my_fragment内创建网格视图并在片段中膨胀。 您还可以在寻呼机适配器中使用多个片段。