- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 ImageAdapter 在 GridView 中显示我的 Activity 图像。都是基本功能,即使我匹配来自多个来源的代码,但我的代码没有运行,这是什么问题?ImageAdapter.java
package com.asad.myflipflopgame;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import java.util.Random;
public class ImageAdapter extends BaseAdapter {
int imageArray[];
Context myContext;
public ImageAdapter(Context context, Boolean shuffle){
myContext = context;
imageArray = new int[]{
R.drawable.placeholder,
R.drawable.sandle_0,
R.drawable.sandle_1,
R.drawable.sandle_2,
R.drawable.sandle_3,
R.drawable.sandle_4,
R.drawable.sandle_5,
R.drawable.sandle_6,
R.drawable.sandle_7,
R.drawable.sandle_8};
if(shuffle){
shuffleArray(imageArray);
}
}
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return imageArray[position];
}
@Override
public long getItemId(int position) {
return imageArray[position];
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView card;
card = new ImageView(myContext);
card.setImageResource(imageArray[position]);
card.setLayoutParams(new GridView.LayoutParams(85,85));
card.setScaleType(ImageView.ScaleType.CENTER_CROP);
return card;
}
private void shuffleArray(int shuffleArray[]) {
Random random = new Random();
for(int i=shuffleArray.length-1; i>0; i--){
int randomNumber = random.nextInt(i+1);
swap(shuffleArray,randomNumber,i);
}
}
private void swap(int array[],int a, int b){
int temp = array[a];
array[a] = array[b];
array[b] = temp;
}
}
使用 ImageAdapter 的 Activity 是 GameBoard.java
package com.asad.myflipflopgame;
import androidx.appcompat.app.AppCompatActivity;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.media.Image;
import android.os.Bundle;
import android.view.View;
import android.util.*;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import java.util.Random;
public class GameBoard extends AppCompatActivity implements View.OnClickListener {
private int imagesArray[];
private int positionArray[];
private int count = 0;
private ImageAdapter imageAdapter;
private GridView gridView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_board);
gridView = findViewById(R.id.grid_view);
imageAdapter = new ImageAdapter(this,true);
gridView.setAdapter(imageAdapter);
/* for(int i=0 ; i< imageAdapter.getCount(); i++){
gridView.getAdapter().getView(i,null,gridView).setTag(R.drawable.placeholder);
((ImageView)gridView.getAdapter().getView(i,null,gridView)).setImageResource(R.drawable.placeholder);
}*/
}
@Override
public void onClick(View v) {
replaceImageOnClick((ImageButton) v);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (hasFocus) {
hideSystemUI();
}
}
private void hideSystemUI() {
// Enables regular immersive mode.
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
// Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE
// Set the content to appear under the system bars so that the
// content doesn't resize when the system bars hide and show.
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
// Hide the nav bar and status bar
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
// Shows the system bars by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
// We will take two arrays one for images and one for number of positions on Board.
// This method will take each image number wise and place it at 2 random positions.
// We will store images in an array number wise eg 9 images in an array of size 9.
// Then we will run outer loop Images array's length times (i.e 9 times).
// And inner loop will run 2 times.
// Inner loop will select a number randomly from number stored in i.e 0 ... 17 .
// HOW: It will save numbers from 0 --- 17 in array of size 18 having indices 0 ... 17.
// And each time we will create a random number withing the range of size = 18 which will create numbers from 0 to 17.
// Then we pick the value placed at that randomly generated index.
// And we will swap the value of that index with the last position of array.
// And next time we will generate random number within range 0 ... 16 similarly next time 0 ... 15 and so on...
public void putImagesOnBoard(){
for(int i =0 ;i<imagesArray.length; i++){
for(int j =0; j<2; j++){
int randomPosition = new Random().nextInt(positionArray.length - count);
String TAG = "HHHHHHHHHHH ";
String str = "imageButton_" + Integer.toString(positionArray[randomPosition]);
Log.v(TAG, str);
//ConstraintLayout constraintLayout = (ConstraintLayout) findViewById(R.id.my_game_board);
//ImageButton btn = constraintLayout.findViewWithTag(str);
//btn.setBackgroundResource(imagesArray[i]);
swap(positionArray, randomPosition, positionArray.length - 1 - count);
count = count+1;
}
}
}
public void swap(int array[], int x, int y){
int temp = array[x];
array[x]=array[y];
array[y] = temp;
}
public void replaceImageOnClick(ImageButton b){
Toast.makeText(this, "Pushed", Toast.LENGTH_SHORT).show();
Drawable drawable= b.getBackground();
// Drawable backgroundDrawable = b.getBackground();
// if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_0)){
// b.setImageResource(R.mipmap.sandle_0);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_1))
// {
// b.setImageResource(R.mipmap.sandle_1);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_2))
// {
// b.setImageResource(R.mipmap.sandle_2);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_3))
// {
// b.setImageResource(R.mipmap.sandle_3);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_4))
// {
// b.setImageResource(R.mipmap.sandle_4);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_5))
// {
// b.setImageResource(R.mipmap.sandle_5);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_6))
// {
// b.setImageResource(R.mipmap.sandle_6);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_7))
// {
// b.setImageResource(R.mipmap.sandle_7);
// }
// else if(backgroundDrawable.getConstantState().equals(R.mipmap.sandle_8))
// {
// b.setImageResource(R.mipmap.sandle_8);
// }
// else{
// }
}
}
布局文件是activity_game_board.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".GameBoard"
android:id="@+id/my_game_board">
<TextView
android:id="@+id/txt_view_time"
android:layout_margin="4dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Time: "
android:textSize="20dp"
android:textColor="#ffffff"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/txt_view_running_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:text="00:00:00"
android:textColor="#ffffff"
android:layout_toRightOf="@+id/txt_view_time"
android:layout_alignParentTop="true"
android:layout_margin="4dp"
/>
<Button
android:id="@+id/btn_pause"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pause"
android:textSize="20dp"
android:textColor="#ffffff"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_margin="4dp"/>
<GridView
android:id="@+id/grid_view"
android:layout_width="wrap_content"
android:numColumns="6"
android:horizontalSpacing="1dp"
android:verticalSpacing="1dp"
android:layout_height="wrap_content"
android:layout_below="@+id/btn_pause"
android:layout_margin="2dp"/>
</RelativeLayout>
最后AndroidMenifest.xml是
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.asad.myflipflopgame">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".GameBoard"
android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden">
</activity>
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
最佳答案
getCount()
返回零,尝试将其更改为返回 imageArray.length
关于java - 为什么使用 ImageAdapter 无法在 GridView 上显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59747533/
我有一个需要以编程方式作为列(而不是行)绑定(bind)到 gridview 的值列表。例如,如果我的 DAL 返回 10 个值,我需要将这 10 个值显示为 gridview 中的列作为标题文本,并
我有一个使用 out-gridview 显示结果的脚本.这是一个简单的例子: "hello world" | out-gridview 当我使用 Run with PowerShell 运行脚本时,它
我正在尝试使用工作正常的 Kartik 导出小部件,除了它没有在扩展“函数/网格”中获取数据。现在我当然明白它是如何工作的,它实际上并没有显示任何东西,只是呈现另一个 View 。但我不知道如何在导出
在 Android 教程中,GridView tutorial准确的说是有一行代码 GridView gridview = (GridView) findViewById(R.id.gridview)
我正在尝试为与我的 gridview 关联的每一列添加一个标题,这样当页面足够宽以显示多行项目时,列标题应该显示在每一列的顶部,如果页面缩小,以至于该列不再适合。 最终结果看起来像这样: 2 colu
在我使用 comboBox 而不是 default(textBox) 在 gridview 中使用这个搜索之前: [ 'attribute' => 'project_status',
我想在列中显示我的交易表中一个/所有帐户的总余额。余额列应显示添加上一行总余额的余额。 我的网格 View 代码是 'yii\grid\SerialColumn'],
我正在使用 gridview 列出我的所有数据。我的 table 看起来像这样。 $dataProvider, 'columns' => [ 'firstName',
我目前正在构建一个 Windows 8 XAML C# 应用程序。在一个页面中,我有一个用于水平滑动和滚动的滚动查看器。我有几个控件可以很好地与 scorllviewer 配合使用。但是当您滚动并且光
当调整 GridView 的大小时,它的元素被重新排列,该元素的动画似乎不起作用。 在这里你可以找到一个简单的例子:http://pastebin.com/BgST6sCv 如果单击示例中的其中一个方
如何动态更改 gridview 模板列顺序? 最佳答案 迭代 通通栏目 的网格 View 对象和 店铺 他们在 收藏 . List columns = new List(); foreach (Dat
我在 Yii2 中使用了 CRUD 生成器,它为我的 actionIndex 生成了以下代码 Controller ... public function actionIndex() { $s
在我的用户模型中我有一个函数: public function getRole() { if ($this->role == self::ROLE_USER) { return
我正在构建一个带有 Yii2 框架的 webapp,它将为用户(登录)提供下载管理员预先上传文件的能力。 我已经创建了操作 actionDownload在调用 sendFile() 的特定 Contr
我想在 GridView 中订购图像。我已经使用列表框并成功将图像添加到其中。它的显示如下 但我希望这些图像显示在 GridView 中。可能与否。 请帮助我......提前致谢 最佳答案 出于此类目
我试图通过在 QtQuick 2.0 (Qt 5) 中动态填充 ListModel 来填充 GridView。它可以工作,但应用程序启动速度非常慢: 应用程序窗口立即出现,但大约需要 2 秒才会出现浅
我在 Yii2 GridView 小部件中显示一些列,“执行人员名称”是其中之一,但它应该仅在主管登录时显示,而不是在执行人员登录时显示。 当我将可见值硬编码为零时,它不会显示如下: [ 'l
我想用 HTML 制作一个表格。所以我从数据库中获取了一些数据。 每个项目都是一个用户。用户有用户名、名字、姓氏和电子邮件。我想制作一个表格来列出这些用户。 每个用户都必须换行。我已经在互联网上搜索过
我想在 pjax 处于事件状态的排序 gridview 之后运行脚本。重新加载 gridview 后我找不到任何事件处理程序。 pjax调用和gridview刷新后有没有正确的事件处理方法? 最佳答案
在 WinRT 上,我有一个 GridView 。我想在到达 gridview 的末尾时执行一个方法。 但是,没有像 GridView 那样的事件方法。 我尝试检测对 gridview 的操纵,但似乎
我是一名优秀的程序员,十分优秀!