2014-07-11 1 views
1

gridview에 대한 onclick 수신기를 설정하려고합니다. gridview는 텍스트와 이미지를 보여줍니다. 항목을 클릭하면 해당 항목의 텍스트를 가져 와서 if 문과 비교하여 확인해야합니다. 여기 수업이 있습니다. 조각 속에 새겨 져 있다는 사실 때문에 나는 조각에 익숙하지 않아서 그것을 알아 내는데 어려움을 겪고 있습니다. 감사합니다조각에서 GridView onItemClick에서 ArrayList의 문자열을 가져 오는 방법은 무엇입니까?

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; 
       } 
      } 
     } 


    } 

답변

0

사용에게 position PARAM을 그 위치

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; 
      } 
    } 
+0

대를 분리하기 위해 아래로 이동할 수 있습니다! 고마워요! 이것은 "Item"에 대한 클래스가 내부 클래스 였기 때문에 예외적으로 작동했습니다. CLASS.MyAdapter.Item item = (CLASS.MyAdapter.Item) parent .....' – cw1998

+0

@ cw1998 당신은 클래스를' .java' 수정 된 게시물에서 제안 된 파일. 그것도 귀하의 경우에 비공개 – Raghunandan

+0

모든 것을 하나로 묶으려는 노력의 일환으로 내부적으로 설명 하겠지만 자체 .java 파일로 옮기는 것이 더 쉽다고 생각합니다. 그러나 나는 너의 제안으로 갈 것이다! 감사! – cw1998

관련 문제