Я создал адаптера адаптера, который использует LayoutInflater, поэтому соотношение изображений сохраняется. Я пытаюсь выполнить простой тост из названия элемента, выбранного i.e «Beef». Everthing workd, как и ожидалось, кроме я получаю выход из тоста, примерТост Элемент выбран - AdapterView/ArrayList
тест com.sweatboxbbq.www.sweatboxbbq.Kansas Город $ MyAdaptor $ Item @ 42aa9398
Я знаю, что я прошу строковое значение, и я получаю его, но из кода я не могу понять, как получить то, что я хочу. Я хочу захватить заголовок только, чтобы я мог его поджарить (сейчас же, а потом придумайте что-нибудь еще).
Пример items.add(new Item(beef, R.drawable.mine_beef));
Я хотел бы получить строковое значение «говядина»
Может быть, я могу ID название-х из этих элементов массива как-то и вытащить их оттуда с помощью метода OnClick?
ниже моего Java-код
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;
}
}
}
}
Спасибо за любую помощь.
Спасибо, человек! Ваша жизнь заставка! Я изменил код на 'String flavorPicked = ((KansasCity.MyAdapter.Item) MyAdapter.getItemAtPosition (position)). Name;' и он сработал !!! – Awatatah