2

이미지를 유지할 수 있도록 LayoutInflater를 사용하는 어댑터 arraylist를 만들었습니다. 즉 "Beef"라는 항목 제목을 간단하게 축하하려고합니다. 모든게 내가 요청하고 알고 내가 42aa9398Toast Item selected - AdapterView/ArrayList

@ 토스트의 출력 예를

테스트 com.sweatboxbbq.www.sweatboxbbq.Kansas시 $ MyAdaptor $ 항목을 얻고 제외하고 예상대로 workd 의 문자열 값과 나는 그것을 얻고 있지만 코드에서, 나는 내가 원하는 것을 얻는 방법을 알 수 없다. 제목을 붙잡고 싶습니다. 그래서 그것을 다시 토스트 할 수 있습니다 (지금은 다른 방법으로 할 것입니다).

items.add(new Item(beef, R.drawable.mine_beef)); 나는 "쇠고기"

의 문자열 값을 얻을 것 어쩌면 내가 할 수있는 ID 제목의 어떻게 든 이러한 배열 항목과 온 클릭 방법과 거기에서 그들을 끌어은?

아래

public class KansasCity extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.kansas_city); 

    final GridView gridView = (GridView) findViewById(R.id.meat_choice); 
    gridView.setAdapter(new MyAdapter(this)); 


    //on click starts here 
    gridView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ 

     public void onItemClick(AdapterView<?> MyAdapter, View v, int position, long id) 
     { 
      String flavorPicked = "" + 
        String.valueOf(MyAdapter.getItemAtPosition(position)); 
      Toast.makeText(KansasCity.this, "Test " + flavorPicked, 
        Toast.LENGTH_LONG).show(); 
     } 
    }); 

} 


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


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

     items.add(new Item("Beef", R.drawable.mine_beef)); 
     items.add(new Item("Chicken", R.drawable.mine_chicken)); 
     items.add(new Item("Swine", R.drawable.mine_pork)); 
     items.add(new Item("Fish", R.drawable.mine_pork)); 
     items.add(new Item("Turkey", R.drawable.mine_pork)); 
     items.add(new Item("Sauce", R.drawable.mine_pork)); 

    } 

    @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); 

     picture.setImageResource(item.drawableId); 
     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; 
     } 



    } 


} 

    } 

어떤 도움 주셔서 감사합니다 내 자바 코드입니다.

답변

1

당신이 중 하나를 "후 flavorPicked 제거하십시오 당신의 Item 클래스 toString()을 무시하고 표시 할 문자열을 반환하거나 회원 Item 대중의 name하게 만들고,

String flavorPicked = ((Item)MyAdapter.getItemAtPosition(position)).name; 
+0

고마워요! 당신의 생명의 은인! 나는 코드를'String flavorPicked = ((KansasCity.MyAdapter.Item) MyAdapter.getItemAtPosition (position))'으로 변경했다. 이름;' 그리고 그것은 효과가 있었다! – Awatatah

0

처럼 사용할 수 있습니다

Toast.makeText (KansasCity.this, "Test"+ flavorPicked ", Toast.LENGTH_LONG) .show();

+0

그건 내 실수 였어. 게시 할 때 오타 였어. 내 문제를 반영하도록 내 코드를 수정했다. – Awatatah

관련 문제