Java 我正在尝试获取图像的id以在全视图中显示它
下面是我无法获取图像id资源的类。我正在尝试从web服务获取所有数据。在这里,我发布了从中获取图像的所有类。我在gridView中显示了所有图像。在这方面我没有遇到问题,但是当我单击gridview的图像时,它显示的只是我调用的xml文件。我想我在某个地方调用FullImageActivity文件中的id时出错了 DefaultGridView.javaJava 我正在尝试获取图像的id以在全视图中显示它,java,android,gridview,Java,Android,Gridview,下面是我无法获取图像id资源的类。我正在尝试从web服务获取所有数据。在这里,我发布了从中获取图像的所有类。我在gridView中显示了所有图像。在这方面我没有遇到问题,但是当我单击gridview的图像时,它显示的只是我调用的xml文件。我想我在某个地方调用FullImageActivity文件中的id时出错了 DefaultGridView.java public class DefaultGridView extends Activity { //int position; pu
public class DefaultGridView extends Activity {
//int position;
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
finish();
}
GridView gridView;
Context context=this;
DisplayImageOptions options;
protected ImageLoader imageLoader = ImageLoader.getInstance();
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.latestphotos);
gridView=(GridView)findViewById(R.id.grid_view);
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.stub_image)
.showImageForEmptyUri(R.drawable.image_for_empty_url)
.cacheInMemory()
.cacheOnDisc()
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
gridView.setAdapter(new ImageAdapter());
}
public class ImageAdapter extends BaseAdapter {
LayoutInflater inflater = LayoutInflater.from(context);
public ImageAdapter() {
// TODO Auto-generated constructor stub
imageLoader.init(ImageLoaderConfiguration.createDefault(DefaultGridView.this));
}
@Override
public int getCount() {
return Global.getPhotos_list().size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
View v = view;
ImageView picture;
TextView name;
if(v == null) {
v = inflater.inflate(R.layout.other, 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)items.get(i);
picture.setImageResource(item.getDrawable());
name.setText(item.name);
Log.d("position", position+"");
imageLoader.displayImage(Constant.img_URL+Global.getPhotos_list().get(position).get("photo_name"), picture , options,null,context);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long a) {
Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
i.putExtra("idkey", position); // pass the id
startActivity(i);
}
});
return v;
}
}
}
ImageAdapter.java
public class ImageAdapter extends BaseAdapter {
private LayoutInflater inflater;
List<Item> items;
public ImageAdapter(Context context,List<Item> items) {
inflater = LayoutInflater.from(context);
this.items = items;
}
@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).drawable;
}
@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.other, 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)items.get(i);
picture.setImageResource(item.getDrawable());
name.setText(item.name);
return v;
}
}
在gridView项目中,单击
Item item =(Item) items.get(position);
int id = item.getDrawable();
Intent i = new Intent(ActivityName.this, FullImageActivity.class);
i.putExtra("idkey", id); // pass the id
startActivity(i);
然后全神贯注
int id = getIntent().getIntExtra("idkey"); //get id
imageview.setImageResource(id); // set the drawable to imageview
您可以将下面的移动到onCreate of DefaultFridView
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long a) {
Item item =(Item) items.get(position);
int id = item.getDrawable();
Intent i = new Intent(ActivityName.this, FullImageActivity.class);
i.putExtra("idkey", id); // pass the id
startActivity(i);
}
});
然后
另外,我不理解将ImageAdapter作为独立类和内部类。为什么您需要在gridView中同时单击这两个项目
Item item =(Item) items.get(position);
int id = item.getDrawable();
Intent i = new Intent(ActivityName.this, FullImageActivity.class);
i.putExtra("idkey", id); // pass the id
startActivity(i);
然后全神贯注
int id = getIntent().getIntExtra("idkey"); //get id
imageview.setImageResource(id); // set the drawable to imageview
您可以将下面的移动到onCreate of DefaultFridView
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v,
int position, long a) {
Item item =(Item) items.get(position);
int id = item.getDrawable();
Intent i = new Intent(ActivityName.this, FullImageActivity.class);
i.putExtra("idkey", id); // pass the id
startActivity(i);
}
});
然后
另外,我不理解将ImageAdapter作为独立类和内部类。为什么两者都需要呢?试试这个例子吧,我觉得它很有用
试试这个例子,如果有用的话
为什么您有两次ImageAdapter?一个作为内部类,另一个在单独的.java文件中?。下载示例并尝试一下为什么您有两次ImageAdapter?一个作为内部类,另一个在单独的.java文件中?。下载示例并试用它。我们在此处未使用静态阵列适配器。。因此,我们没有在DefaultGridView.java中使用Items来调用相同的函数,当我们将代码粘贴到其中时,它会在Items中显示错误。第一行。但是您有两个适配器类。还有错误是什么。错误是因为您需要在defaultgridview中包含列表,但您没有列表,并且我看不到您在图像适配器中填充项目的位置,因为我们的全部数据来自webservice。gridView中的图像不是静态的。。!!然后向我显示填充项目的代码。因为您在imageadapter中使用的是相同的,为什么您有两个适配器。我们在这里没有使用静态阵列适配器。。因此,我们没有在DefaultGridView.java中使用Items来调用相同的函数,当我们将代码粘贴到其中时,它会在Items中显示错误。第一行。但是您有两个适配器类。还有错误是什么。错误是因为您需要在defaultgridview中包含列表,但您没有列表,并且我看不到您在图像适配器中填充项目的位置,因为我们的全部数据来自webservice。gridView中的图像不是静态的。。!!然后向我显示填充项目的代码。因为您在imageadapter中使用的是相同的,为什么您有两个适配器。这没有道理
items.add(new Item("One", R.drawable.abstact_one));
items.add(new Item("Two", R.drawable.abstract_three));
items.add(new Item("Three", R.drawable.image_two));
items.add(new Item("Four", R.drawable.image_four));
items.add(new Item("Five", R.drawable.image_five));
items.add(new Item("Six", R.drawable.image_nine));
items.add(new Item("Seven", R.drawable.image_ten));
gridView.setAdapter(new ImageAdapter(),items);