首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >全图像适配器错误

全图像适配器错误
EN

Stack Overflow用户
提问于 2017-01-15 14:26:15
回答 1查看 95关注 0票数 1

我有一个自定义的基本图像适配器,用于网格视图。我试图将其用于完整的图像视图,但在创建自定义适配器object...passing参数时出错.顺便说一句,对任何错误感到抱歉,这是我的第一个问题:这是供画廊全面预览的。

充分的java:存在错误的地方

代码语言:javascript
复制
public class FullImage extends Activity {

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

        Intent i= getIntent();

        int position = i.getExtras().getInt("id");
        MyPicsAdapter adapter = new MyPicsAdapter(this);//ERROR is here!!!

        ImageView imageView = (ImageView) findViewById(R.id.fullimage);
        imageView.setImageResource(adapter.item_image[position]);

    }
}

自定义适配器:

代码语言:javascript
复制
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;


public class MyPicsAdapter extends BaseAdapter{
    public Context context;
    public final int item_image[];
    public final String item_text[];

    public MyPicsAdapter(Context context, int item_image[], String[] item_text)
    {
        this.context = context;
        this.item_image = item_image;
        this.item_text = item_text;
    }


    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;

        if (convertView == null) {
            gridView = new View(context);

            // get layout from custom_gridview.xml
            gridView = inflater.inflate(R.layout.custom_gridview, null);

            // set value into imageview
            ImageView image = (ImageView) gridView.findViewById(R.id.item_image);
            image.setImageResource(item_image[position]);

            // set value into textview
            TextView text = (TextView) gridView.findViewById(R.id.item_text);
            text.setText(item_text[position]);
        } else {
            gridView = (View) convertView;
        }

        return gridView;
    }

    @Override
    public int getCount() {
        return item_text.length;
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }


}

在图像为:

代码语言:javascript
复制
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;
import android.widget.Toast;



public class Smitpic extends AppCompatActivity {

    GridView grid;
    String text[] = {
            "Colorful countryside on the way to Smit",
            "A local bus at the Village square",
            "Cattle grazing at the village ground",
            "Pine trees lined the road leading to the Wooden house",
            "Traditional wooden house made without any metal nails",
            "Intricate carvings on the door of the wooden house",
            "A cottage at Smit",
            "Villagers returning home after washing clothes at the river",
            "A river idlying flowing near Smit",
            "Colorful field of grasses and pine trees"
    };
    int image[] = {R.drawable.smit1,R.drawable.smit2,
            R.drawable.smit3,R.drawable.smit4,R.drawable.smit5,
            R.drawable.smit6,R.drawable.smit7,R.drawable.smit8,
            R.drawable.smit9,R.drawable.smit10
    };

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

        grid = (GridView)findViewById(R.id.simpleGrid);
        grid.setAdapter(new MyPicsAdapter(this,image,text));
        // grid.setAdapter(new ImageAdapter(this,image));

        grid.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(getApplicationContext(),text[position],Toast.LENGTH_LONG).show();
                Intent a= new Intent(getApplicationContext(),FullImage.class);
                a.putExtra("id",position);
                startActivity(a);
            }
        });

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-15 14:42:56

您只能按以下方式传递图像,

代码语言:javascript
复制
grid.setOnItemClickListener(new AdapterView.OnItemClickListener(){
    @Override  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getApplicationContext(),text[position],Toast.LENGTH_LONG).show();
        Intent a = new Intent(getApplicationContext(),FullImage.class);
        a.putExtra("id", image[position]);
        startActivity(a);
    }
});

onCreate of FullImage活动中获取图像并在ImageView中显示,

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_full_image);

    int image = getIntent().getExtras().getInt("id");

    ImageView imageView = (ImageView) findViewById(R.id.fullimage);
    imageView.setImageResource(image);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41662222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档