如何更改图片上的GridView运行? [英] How can I change Image on Gridview Runtime?
问题描述
我有一个GridView控件与3列和3行我想改变形象,当用户点击任意两个图像。
例如我点击第一行1列3图像,其次我点击第3行和列2显示现在我想改变这两个图像像交换图像怎么可能?
公共类MainActivity延伸活动{
/ **第一次创建活动时调用。 * /
GridView控件GridView控件;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
GridView控件=(GridView控件)findViewById(R.id.gridviewmy);
gridView.setAdapter(新ImageAdapter(本));
最后ImageAdapter IM =新ImageAdapter(本);
gridView.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>为arg0,查看ARG1,INT ARG2,长ARG3){
// TODO自动生成方法存根
INT I = 0; INT J = 0;
如果(ⅰ!= 0){
J = ARG2;
的System.out.println(首次点击+ J);
}其他{
I = ARG2;
的System.out.println(第二点击+ I);
}
im.getItem(ARG2);
//im.changeImage();
Toast.makeText(MainActivity.this,+ ARG2,Toast.LENGTH_SHORT).show();
的System.out.println(适配器视图+为arg0);
的System.out.println(查看+ ARG1);
的System.out.println(整数+ ARG2);
的System.out.println(长+参数3);
}
});
}
}
类ImageAdapter扩展了BaseAdapter {
私人语境mContext;
ImageView的iView中;
公共ImageAdapter(上下文C){
this.mContext = C;
}
@覆盖
公众诠释getCount将(){
// TODO自动生成方法存根
返回mThumbIds.length;
}
@覆盖
公共对象的getItem(INT位置){
// TODO自动生成方法存根
的System.out.println(项目: - + mThumbIds [位置]的ToString());
返回的位置;
}
@覆盖
众长getItemId(INT位置){
// TODO自动生成方法存根
的System.out.println(项目的葛亭ID+ mThumbIds [位置]);
如果(iView中!= NULL){
iView.setImageResource(mThumbIds [0]);
Toast.makeText(mContext,呼叫,Toast.LENGTH_SHORT).show();
}
返回0;
}
@覆盖
公共查看getView(INT位置,查看convertView,ViewGroup中父){
// TODO自动生成方法存根
如果(convertView == NULL){
iView中=新ImageView的(mContext);
iView.setLayoutParams(新GridView.LayoutParams(85,85));
iView.setScaleType(ImageView.ScaleType.CENTER_CROP);
iView.setPadding(8,8,8,8);
}其他{
iView中=(ImageView的)convertView;
}
iView.setImageResource(mThumbIds [位置]);
返回的iView;
}
私人整数[] mThumbIds = {
R.drawable.a_bhaibij,R.drawable.a_dashera,R.drawable.a_dipawali,
R.drawable.a_gandhi,R.drawable.a_holi,R.drawable.a_indepe,
R.drawable.a_janmastmi,R.drawable.a_kite,R.drawable.a_newyear
};
公共无效changeImage(){
iView.setImageResource(mThumbIds [5]);
}
}
Swaping图像在GridView非常simple.What,你所要做的就是
1 *存放cliked位置,要执行swaping。
2 *通过使用这两个值执行上mThumbIds阵列的交换操作。
3 *最后调用适配器对象即im.notifyDataSetChanged()在notifyDataSetChanged()方法;
公共类MainActivity延伸活动{
/ **第一次创建活动时调用。 * /
INT I = 0;
INT firstClick,secondClick;
GridView控件GridView控件;
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
GridView控件=(GridView控件)findViewById(R.id.gridviewmy);
gridView.setAdapter(新ImageAdapter(本));
最后ImageAdapter IM =新ImageAdapter(本);
gridView.setOnItemClickListener(新OnItemClickListener(){
@覆盖
公共无效onItemClick(适配器视图<>为arg0,查看ARG1,INT ARG2,长ARG3){
// TODO自动生成方法存根
我++;
如果(ⅰ%2!= 0){
firstClick = ARG2;
}其他{
secondClick = ARG2;
整数帮助=新的基于整数(mThumbIds [firstClick]);
mThumbIds [firstClick] = mThumbIds [secondClick]
mThumbIds [secondClick] =帮助;
notifyDataSetChanged();
的System.out.println(第二点击+ I);
}
}
});
}
}
类ImageAdapter扩展了BaseAdapter {
私人语境mContext;
ImageView的iView中;
公共ImageAdapter(上下文C){
this.mContext = C;
}
@覆盖
公众诠释getCount将(){
// TODO自动生成方法存根
返回mThumbIds.length;
}
@覆盖
公共对象的getItem(INT位置){
// TODO自动生成方法存根
的System.out.println(项目: - + mThumbIds [位置]的ToString());
返回的位置;
}
@覆盖
众长getItemId(INT位置){
// TODO自动生成方法存根
的System.out.println(项目的葛亭ID+ mThumbIds [位置]);
如果(iView中!= NULL){
iView.setImageResource(mThumbIds [0]);
Toast.makeText(mContext,呼叫,Toast.LENGTH_SHORT).show();
}
返回0;
}
@覆盖
公共查看getView(INT位置,查看convertView,ViewGroup中父){
// TODO自动生成方法存根
如果(convertView == NULL){
iView中=新ImageView的(mContext);
iView.setLayoutParams(新GridView.LayoutParams(85,85));
iView.setScaleType(ImageView.ScaleType.CENTER_CROP);
iView.setPadding(8,8,8,8);
}其他{
iView中=(ImageView的)convertView;
}
iView.setImageResource(mThumbIds [位置]);
返回的iView;
}
私人整数[] mThumbIds = {
R.drawable.a_bhaibij,R.drawable.a_dashera,R.drawable.a_dipawali,
R.drawable.a_gandhi,R.drawable.a_holi,R.drawable.a_indepe,
R.drawable.a_janmastmi,R.drawable.a_kite,R.drawable.a_newyear
};
}
我想,这可能会解决你的问题。
所有最优秀的。
I have one GridView with 3 Column and 3 Rows I want to change Image when User Click any two Images.
for Example I Click First Row 1 and Column 3 Image and Secondly I Click on Row 3 and Column 2 show now i want to change this two Images like Swap the Image How is it Possible ?
public class MainActivity extends Activity {
/** Called when the activity is first created. */
GridView gridView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView = (GridView)findViewById(R.id.gridviewmy);
gridView.setAdapter(new ImageAdapter(this));
final ImageAdapter im = new ImageAdapter(this);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
int i=0; int j=0;
if( i != 0){
j=arg2;
System.out.println("First Click "+j);
}else{
i=arg2;
System.out.println("Second Click "+i);
}
im.getItem(arg2);
//im.changeImage();
Toast.makeText(MainActivity.this, ""+arg2, Toast.LENGTH_SHORT).show();
System.out.println("AdapterView "+arg0);
System.out.println("View "+arg1);
System.out.println("Integer "+arg2);
System.out.println("long "+arg3);
}
});
}
}
class ImageAdapter extends BaseAdapter{
private Context mContext;
ImageView iView;
public ImageAdapter(Context c){
this.mContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
System.out.println("Item Is :-"+mThumbIds[position].toString());
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
System.out.println("Geting Id of Item "+mThumbIds[position]);
if(iView != null){
iView.setImageResource(mThumbIds[0]);
Toast.makeText(mContext, "Call", Toast.LENGTH_SHORT).show();
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if( convertView == null){
iView = new ImageView(mContext);
iView.setLayoutParams(new GridView.LayoutParams(85, 85));
iView.setScaleType(ImageView.ScaleType.CENTER_CROP);
iView.setPadding(8,8,8,8);
}else{
iView = (ImageView)convertView;
}
iView.setImageResource(mThumbIds[position]);
return iView;
}
private Integer[] mThumbIds = {
R.drawable.a_bhaibij, R.drawable.a_dashera, R.drawable.a_dipawali,
R.drawable.a_gandhi, R.drawable.a_holi, R.drawable.a_indepe,
R.drawable.a_janmastmi, R.drawable.a_kite, R.drawable.a_newyear
};
public void changeImage(){
iView.setImageResource(mThumbIds[5]);
}
}
Swaping the images in the GridView is very simple.What you have to do is
1* Store the cliked position,where you want to perform the swaping .
2* By using those two values perform the swap operation on mThumbIds array.
3* Finally invoke the notifyDataSetChanged() method on the Adapter object i.e im.notifyDataSetChanged();
public class MainActivity extends Activity {
/** Called when the activity is first created. */
int i=0;
int firstClick,secondClick;
GridView gridView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gridView = (GridView)findViewById(R.id.gridviewmy);
gridView.setAdapter(new ImageAdapter(this));
final ImageAdapter im = new ImageAdapter(this);
gridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {
// TODO Auto-generated method stub
i++;
if( i %2!=0){
firstClick=arg2;
}else{
secondClick=arg2;
Integer help=new Interger(mThumbIds[firstClick]);
mThumbIds[firstClick]=mThumbIds[secondClick];
mThumbIds[secondClick]=help;
notifyDataSetChanged();
System.out.println("Second Click "+i);
}
}
});
}
}
class ImageAdapter extends BaseAdapter{
private Context mContext;
ImageView iView;
public ImageAdapter(Context c){
this.mContext = c;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mThumbIds.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
System.out.println("Item Is :-"+mThumbIds[position].toString());
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
System.out.println("Geting Id of Item "+mThumbIds[position]);
if(iView != null){
iView.setImageResource(mThumbIds[0]);
Toast.makeText(mContext, "Call", Toast.LENGTH_SHORT).show();
}
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if( convertView == null){
iView = new ImageView(mContext);
iView.setLayoutParams(new GridView.LayoutParams(85, 85));
iView.setScaleType(ImageView.ScaleType.CENTER_CROP);
iView.setPadding(8,8,8,8);
}else{
iView = (ImageView)convertView;
}
iView.setImageResource(mThumbIds[position]);
return iView;
}
private Integer[] mThumbIds = {
R.drawable.a_bhaibij, R.drawable.a_dashera, R.drawable.a_dipawali,
R.drawable.a_gandhi, R.drawable.a_holi, R.drawable.a_indepe,
R.drawable.a_janmastmi, R.drawable.a_kite, R.drawable.a_newyear
};
}
I think this may solve you problem.
All the best.
这篇关于如何更改图片上的GridView运行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!