嗨我有图像网格视图的代码,当我点击网格的每个图像时,它打开空布局 但我想当我点击第一张图片,所以用更大的尺寸打开它我的意思是调用我点击的相同图像 这是主要的代码
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
public class fitgridview extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fitgridview);
GridView gridView = (GridView)findViewById(R.id.gridview);
gridView.setAdapter(new MyAdapter(this));
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// Send intent to SingleViewActivity
Intent i = new Intent(getApplicationContext(), SingleViewActivity2.class);
// Pass image index
i.putExtra("id", position);
startActivity(i);
}
});
}
}
这是myAdapter java类的代码: -
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by lenovo on 06/08/2016.
*/
public class MyAdapter extends BaseAdapter {
private final List<Item> mItems = new ArrayList<Item>();
private final LayoutInflater mInflater;
public MyAdapter(Context context) {
mInflater = LayoutInflater.from(context);
mItems.add(new Item("Red", R.drawable.ic_menu_camera));
mItems.add(new Item("Magenta", R.drawable.ic_menu_gallery));
mItems.add(new Item("Dark Gray", R.drawable.ic_menu_manage));
mItems.add(new Item("Gray", R.drawable.ic_menu_send));
mItems.add(new Item("Green", R.drawable.ic_menu_share));
mItems.add(new Item("Cyan", R.drawable.ic_menu_slideshow));
mItems.add(new Item("Red", R.drawable.ic_menu_camera));
mItems.add(new Item("Magenta", R.drawable.ic_menu_gallery));
mItems.add(new Item("Dark Gray", R.drawable.ic_menu_manage));
mItems.add(new Item("Gray", R.drawable.ic_menu_send));
mItems.add(new Item("Green", R.drawable.ic_menu_share));
mItems.add(new Item("Cyan", R.drawable.ic_menu_slideshow));
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public Item getItem(int i) {
return mItems.get(i);
}
@Override
public long getItemId(int i) {
return mItems.get(i).drawableId;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = view;
ImageView picture;
TextView name;
if (v == null) {
v = mInflater.inflate(R.layout.grid_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 = getItem(i);
picture.setImageResource(item.drawableId);
name.setText(item.name);
return v;
}
private static class Item {
public final String name;
public final int drawableId;
Item(String name, int drawableId) {
this.name = name;
this.drawableId = drawableId;
}
}
}
这是SquareImageView java类: -
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* Created by lenovo on 06/08/2016.
*/
public class SquareImageView extends ImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth()); //Snap to width
}
}
我点击它后如何调用每个图像?我应该在SingleViewActivity2中写什么来做我想做的事情 帮帮我,非常感谢
答案 0 :(得分:1)
首先,适配器只保存一个列表。您可以从活动添加对象并在其中传递列表。
在代码中,
// Fields
private List<Item> mItems = new ArrayList<Item>();
private MyAdapter mAdapter;
// onCreate
mAdapter = new MyAdapter(this, mItems);
gridView.setAdapter(mAdapter);
现在,如果你改为ArrayAdapter<Item>
而不是BaseAdapter
,你可以利用一些有用的方法。例如,
mAdapter.add(new Item(...));
现在,建议您研究如何做public class Item implements Parcelable
,这超出了本答案的范围。
完成后,您可以在活动
之间传递Parcelable
个对象
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
// Send intent to SingleViewActivity
Intent i = new Intent(getApplicationContext(), SingleViewActivity2.class);
// Pass image item
i.putExtra("item", mAdapter.getItem(position));
startActivity(i);
}
});
答案 1 :(得分:0)
将对象从activity传递给适配器,然后渲染。
目前你正在从适配器创建和渲染对象,这是一种编程习惯。
当您从活动传递对象时,您可以将具有意图的对象传递给下一个活动,您将达到您的要求。
这是解决问题的唯一方法。