Android 如何从片段中的GridView中的ArrayList中获取字符串?

Android 如何从片段中的GridView中的ArrayList中获取字符串?,android,gridview,android-fragments,Android,Gridview,Android Fragments,我正在尝试为gridview设置onclick侦听器。gridview显示文本和图像。单击某个项目时,我希望它从该项目中获取文本,并对照一些if语句进行检查。这是我的班级。由于它是一个片段,而且我对片段还不熟悉,所以我很难理解它。谢谢 IMPORTS HERE... public class Items extends SherlockFragment { public View onCreateView(LayoutInflater inflater, Vi

我正在尝试为gridview设置onclick侦听器。gridview显示文本和图像。单击某个项目时,我希望它从该项目中获取文本,并对照一些if语句进行检查。这是我的班级。由于它是一个片段,而且我对片段还不熟悉,所以我很难理解它。谢谢

    IMPORTS HERE...

    public class Items extends SherlockFragment {

        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
            View view=inflater.inflate(R.layout.activity_main, container, false);


            GridView gridView = (GridView)view.findViewById(R.id.gridview);
            gridView.setAdapter(new MyAdapter(getActivity()));
            gridView.setOnItemClickListener(new OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View v,
                        int position, long id) {

                    if(SOMETHING.equals("Furniture")){
                        Toast.makeText(getActivity(), "Furny", Toast.LENGTH_SHORT).show();
                    //THIS IS WHERE I'M STUCK. I DON'T KNOW WHAT TO REPLACE "SOMETHING" WITH

}
             }
            });


            return view;
        }



        public class MyAdapter extends BaseAdapter
        {
            private List<Item> items = new ArrayList<Item>();
            private LayoutInflater inflater;

            public MyAdapter(Context context)
            {
                inflater = LayoutInflater.from(context);

                items.add(new Item("Weapons", R.drawable.BOMB));
                items.add(new Item("Tools", R.drawable.TOOL));
                items.add(new Item("Furniture", R.drawable.CHAIR));


            }

            @Override
            public int getCount() {
                return items.size();
            }

            @Override
            public Object getItem(int i)
            {
                return items.get(i);
            }

            @Override
            public long getItemId(int i)
            {
                return items.get(i).drawableId;
            }



            @Override
            public View getView(int i, View view, ViewGroup viewGroup)
            {
                View v = view;
                ImageView picture;
                TextView name;

                if(v == null)
                {
                   v = inflater.inflate(R.layout.gridview_item, viewGroup, false);
                   v.setTag(R.id.picture, v.findViewById(R.id.picture));
                   v.setTag(R.id.text, v.findViewById(R.id.text));
                }

                picture = (ImageView)v.getTag(R.id.picture);
                name = (TextView)v.getTag(R.id.text);

                Item item = (Item)getItem(i);
                Options options = new BitmapFactory.Options();
                options.inDither = false;
                options.inScaled = false;
                Bitmap source = BitmapFactory.decodeResource(getResources(), item.drawableId, options);

                final int maxSize = 120;
                int outWidth;
                int outHeight;
                int inWidth = source.getWidth();
                int inHeight = source.getHeight();
                if(inWidth > inHeight){
                    outWidth = maxSize;
                    outHeight = (inHeight * maxSize) / inWidth; 
                } else {
                    outHeight = maxSize;
                    outWidth = (inWidth * maxSize) / inHeight; 
                }

                Bitmap resizedBitmap = Bitmap.createScaledBitmap(source, outWidth, outHeight, false);
                picture.setImageBitmap(resizedBitmap);
                name.setText(item.name);

                return v;


            }

            private class Item
            {
                final String name;
                final int drawableId;

                Item(String name, int drawableId)
                {
                    this.name = name;
                    this.drawableId = drawableId;
                }
            }
        }


    }
在此处导入。。。
公共类项扩展了SherlockFragment{
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.activity\u main,容器,错误);
GridView GridView=(GridView)view.findviewbyd(R.id.GridView);
setAdapter(新的MyAdapter(getActivity());
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、,
内部位置,长id){
如果(某物等于(“家具”)){
Toast.makeText(getActivity(),“Furny”,Toast.LENGTH_SHORT.show();
//这就是我被困的地方。我不知道用什么来代替“某物”
}
}
});
返回视图;
}
公共类MyAdapter扩展了BaseAdapter
{
私有列表项=新的ArrayList();
私人充气机;
公共MyAdapter(上下文)
{
充气器=充气器。从(上下文);
物品。添加(新物品(“武器”,R.drawable.BOMB));
添加(新项目(“工具”,R.drawable.TOOL));
项目。添加(新项目(“家具”,R.可拉拔椅子));
}
@凌驾
public int getCount(){
返回items.size();
}
@凌驾
公共对象getItem(int i)
{
返回项目。获取(i);
}
@凌驾
公共长getItemId(int i)
{
退货项目.get(i).drawableId;
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组)
{
视图v=视图;
图像视图图片;
文本视图名称;
如果(v==null)
{
v=充气机。充气(R.layout.gridview_项,视图组,false);
v、 setTag(R.id.picture,v.findViewById(R.id.picture));
v、 setTag(R.id.text,v.findviewbyd(R.id.text));
}
picture=(ImageView)v.getTag(R.id.picture);
name=(TextView)v.getTag(R.id.text);
Item Item=(Item)getItem(i);
Options=new-BitmapFactory.Options();
options.inDither=false;
options.inScaled=false;
位图源=BitmapFactory.decodeResource(getResources(),item.drawableId,options);
最终int maxSize=120;
外展;
内部高度;
int inWidth=source.getWidth();
int inHeight=source.getHeight();
如果(英寸宽度>英寸高度){
外径=最大尺寸;
外高=(内高*最大尺寸)/内宽;
}否则{
外高=最大尺寸;
外径=(inWidth*maxSize)/inHeight;
}
Bitmap resizedBitmap=Bitmap.createScaledBitmap(源、外宽、外高、假);
picture.setImageBitmap(resizedBitmap);
name.setText(item.name);
返回v;
}
私人类项目
{
最后的字符串名;
最终int可提取ID;
项(字符串名称,int-drawableId)
{
this.name=名称;
this.drawableId=drawableId;
}
}
}
}

使用
位置
参数并在该位置获取项目

 Item item= (Item) parent.getItemAtPosition(position);
 String name = item.name;
您可以将下面的移动到单独的
.java
文件中

  public class Item 
  {
             String name;
             int drawableId;

            Item(String name, int drawableId)
            {
                this.name = name;
                this.drawableId = drawableId;
            }
   }

伟大的非常感谢你!这工作得很好,除了因为我的“Item”类是内部类之外,我必须执行
class.MyAdapter.Item Item=(class.MyAdapter.Item)parent…
@cw1998您可以将该类移动到独立的
.java
文件中,如编辑文章中所建议的那样。我把它放在内部,但我想把它移到自己的.java文件中会更容易。但我会同意你的建议!谢谢