【问题标题】:Change GridView images on item click at run time in android在android中运行时更改项目单击时的GridView图像
【发布时间】:2014-03-11 10:44:42
【问题描述】:

我在应用程序中使用 GridView。我希望当我单击项目时它应该替换另一个数组图片。实际上我在应用程序第一次运行时使用了两个数组,GridView 将显示第一个数组图片,之后当我单击项目时,它应该根据其位置替换为第二个数组图片。
我试过但没有解决。所以任何人都可以帮助我..

GridViewContent.java

public class GridViewContent extends BaseAdapter {
    private Context context;

    public int pictureArray[]={
            R.drawable.question,
            R.drawable.question,
            R.drawable.question,
            R.drawable.question,
            R.drawable.question,
            R.drawable.question,
            R.drawable.question,
            R.drawable.question,        
    };
    public GridViewContent(Context c){
        context=c;

    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return (pictureArray.length);
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return pictureArray[position];
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View arg1, ViewGroup arg2) {
        // TODO Auto-generated method stub
        ImageView myimage=new ImageView(context);
        myimage.setImageResource(pictureArray[position]);
        myimage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
        myimage.setLayoutParams(new GridView.LayoutParams(70, 70));


        return myimage;
    }

}      

MainActivity.java

public class MainActivity extends Activity {
    Context ctx;
    GridViewContent grid1 = new GridViewContent(ctx);
    // GridView grid;
    /*
     * static final int[] numbers = new int[] {
     * R.drawable.question,R.drawable.question
     * ,R.drawable.question,R.drawable.question
     * ,R.drawable.question,R.drawable.question, R.drawable.question,
     * 
     * };
     */
    public int OriginalArray[] = { R.drawable.sample_0, R.drawable.sample_1,
            R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,
            R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final GridView grid = (GridView) findViewById(R.id.gv_memory);
        grid.setAdapter(new GridViewContent(this));
        // grid.setOnItemClickListener(itemClickListener);
        grid.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                int id = v.getId();
                ImageView pictImage = new ImageView(ctx);
                int imgView = OriginalArray[id];
                pictImage.setImageResource(imgView);

            }
        });

    }
}     

main.xml

<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gv_memory"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:columnWidth="90dp"
    android:gravity="center"
    android:horizontalSpacing="10dp"
    android:numColumns="auto_fit"
    android:stretchMode="columnWidth"
    android:verticalSpacing="10dp" >

</GridView>      

提前谢谢....

【问题讨论】:

    标签: java android android-layout gridview


    【解决方案1】:

    您需要做一些小改动,如下所示:

    public class GridViewContent extends BaseAdapter {
        private Context context;
    
        public int pictureArray[]={
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,
                R.drawable.question,        
        };
    
     public int OriginalArray[] = { R.drawable.sample_0, R.drawable.sample_1,
                R.drawable.sample_2, R.drawable.sample_3, R.drawable.sample_4,
                R.drawable.sample_5, R.drawable.sample_6, R.drawable.sample_7, };
    
        public GridViewContent(Context c){
            context=c;
    
        }
    
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return (pictureArray.length);
        }
    
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return pictureArray[position];
        }
    
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }
    
        @Override
        public View getView(int position, View arg1, ViewGroup arg2) {
            // TODO Auto-generated method stub
            ImageView myimage=new ImageView(context);
            myimage.setImageResource(pictureArray[position]);
            myimage.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            myimage.setLayoutParams(new GridView.LayoutParams(70, 70));
    
    
    
    
           myimage.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                myimage.setImageResources(Original[arg2]);
            }
        });
            return myimage;
        }
    
    }      
    

    【讨论】:

    • 先生这行给出错误,myimage.setOnClickListener(new onClickListener(){ myimage.setImageResource(OriginalArray[position]);
    【解决方案2】:

    为 gridview 实现 onitemclicklistener。请参阅此站点 http://www.mkyong.com/android/android-gridview-example/。在其中编写更改逻辑并调用 adapter.notifydatasetChanged()。 http://stackoverflow.com/questions/6201884/how-can-i-change-image-on-gridview-runtime

    【讨论】:

    • 请先生帮我解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多