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;
}
}
}
}
대를 분리하기 위해 아래로 이동할 수 있습니다! 고마워요! 이것은 "Item"에 대한 클래스가 내부 클래스 였기 때문에 예외적으로 작동했습니다. CLASS.MyAdapter.Item item = (CLASS.MyAdapter.Item) parent .....' – cw1998
@ cw1998 당신은 클래스를' .java' 수정 된 게시물에서 제안 된 파일. 그것도 귀하의 경우에 비공개 – Raghunandan
모든 것을 하나로 묶으려는 노력의 일환으로 내부적으로 설명 하겠지만 자체 .java 파일로 옮기는 것이 더 쉽다고 생각합니다. 그러나 나는 너의 제안으로 갈 것이다! 감사! – cw1998