Android 网格视图在网格之间移动图像
Android Grid view moving images between grids
我有网格视图并加载图像。我能够获取网格位置。
如果我单击两个网格,第一个网格的图像应该移动到第二个网格的 location.I that.Just 我想用修改后的图像重新加载网格视图。
请帮助我做到这一点。
我是 android 应用程序开发的初学者,所以请给我更多详细信息,以便我更好、更清楚地理解。
提前致谢:)
public class MainActivity extends AppCompatActivity {
GridView androidGridView;
Integer[] imageIDs = {
R.drawable.br, R.drawable.bh, R.drawable.bb, R.drawable.bq, R.drawable.bk, R.drawable.bb, R.drawable.bh, R.drawable.br,
R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp,
R.drawable.wr, R.drawable.wh, R.drawable.wb, R.drawable.wq, R.drawable.wk, R.drawable.wb, R.drawable.wh, R.drawable.wr
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
androidGridView = (GridView) findViewById(R.id.gridview);
androidGridView.setAdapter(new ImageAdapterGridView(this));
androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,
View v, int position, long id) {
if (Globals.iClickOne == -1) {
Globals.iClickOne = position + 1;
}
else {
Globals.iClickTwo = position + 1;
if (Globals.iClickOne == Globals.iClickTwo) {
Globals.iClickOne = -1;
Globals.iClickTwo = -1;
}
else {
imageIDs[Globals.iClickTwo - 1] = imageIDs[Globals.iClickOne - 1];
imageIDs[Globals.iClickOne - 1] = 0;
Globals.iClickOne = -1;
Globals.iClickTwo = -1;
}
}
}
});
}
public class ImageAdapterGridView extends BaseAdapter {
private Context mContext;
public ImageAdapterGridView(Context c) {
mContext = c;
}
public int getCount() {
return imageIDs.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView mImageView;
if (convertView == null) {
mImageView = new ImageView(mContext);
mImageView.setLayoutParams(new GridView.LayoutParams(50, 60));
mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
mImageView.setPadding(1, 1, 1, 1);
} else {
mImageView = (ImageView) convertView;
}
mImageView.setImageResource(imageIDs[position]);
return mImageView;
}
}
}
在上面的代码后
else {
imageIDs[Globals.iClickTwo - 1] = imageIDs[Globals.iClickOne - 1];
imageIDs[Globals.iClickOne - 1] = 0;
androidGridView.setAdapter(new ImageAdapterGridView(MainActivity.this)); //I added
Globals.iClickOne = -1;
Globals.iClickTwo = -1;
}
基本上在修改图像数组值后,我使用 "androidGridView.setAdapter(new ImageAdapterGridView(MainActivity.this));" 重新加载了 gridview
正在运行!
我有网格视图并加载图像。我能够获取网格位置。
如果我单击两个网格,第一个网格的图像应该移动到第二个网格的 location.I that.Just 我想用修改后的图像重新加载网格视图。
请帮助我做到这一点。 我是 android 应用程序开发的初学者,所以请给我更多详细信息,以便我更好、更清楚地理解。 提前致谢:)
public class MainActivity extends AppCompatActivity {
GridView androidGridView;
Integer[] imageIDs = {
R.drawable.br, R.drawable.bh, R.drawable.bb, R.drawable.bq, R.drawable.bk, R.drawable.bb, R.drawable.bh, R.drawable.br,
R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp, R.drawable.bp,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp, R.drawable.wp,
R.drawable.wr, R.drawable.wh, R.drawable.wb, R.drawable.wq, R.drawable.wk, R.drawable.wb, R.drawable.wh, R.drawable.wr
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
androidGridView = (GridView) findViewById(R.id.gridview);
androidGridView.setAdapter(new ImageAdapterGridView(this));
androidGridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent,
View v, int position, long id) {
if (Globals.iClickOne == -1) {
Globals.iClickOne = position + 1;
}
else {
Globals.iClickTwo = position + 1;
if (Globals.iClickOne == Globals.iClickTwo) {
Globals.iClickOne = -1;
Globals.iClickTwo = -1;
}
else {
imageIDs[Globals.iClickTwo - 1] = imageIDs[Globals.iClickOne - 1];
imageIDs[Globals.iClickOne - 1] = 0;
Globals.iClickOne = -1;
Globals.iClickTwo = -1;
}
}
}
});
}
public class ImageAdapterGridView extends BaseAdapter {
private Context mContext;
public ImageAdapterGridView(Context c) {
mContext = c;
}
public int getCount() {
return imageIDs.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView mImageView;
if (convertView == null) {
mImageView = new ImageView(mContext);
mImageView.setLayoutParams(new GridView.LayoutParams(50, 60));
mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
mImageView.setPadding(1, 1, 1, 1);
} else {
mImageView = (ImageView) convertView;
}
mImageView.setImageResource(imageIDs[position]);
return mImageView;
}
}
}
在上面的代码后
else {
imageIDs[Globals.iClickTwo - 1] = imageIDs[Globals.iClickOne - 1];
imageIDs[Globals.iClickOne - 1] = 0;
androidGridView.setAdapter(new ImageAdapterGridView(MainActivity.this)); //I added
Globals.iClickOne = -1;
Globals.iClickTwo = -1;
}
基本上在修改图像数组值后,我使用 "androidGridView.setAdapter(new ImageAdapterGridView(MainActivity.this));" 重新加载了 gridview 正在运行!