gpt4 book ai didi

android - 为 GridView Android 中的选定项目禁用 onClick

转载 作者:太空宇宙 更新时间:2023-11-03 12:52:15 25 4
gpt4 key购买 nike

我想知道如何禁止点击 Gridview 中的一组项目。

这是类:

public class LevelSelectActivity extends Activity {

public GridView gridView;
public TextView Easy;
public TextView Medium;
public TextView Hard;
public Button mBackButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_level_select);

Easy = (TextView) findViewById(R.id.EasyText);
Easy.setTypeface(ApplicationServices.typeFaceDoubleBlast);
Medium = (TextView) findViewById(R.id.MediumText);
Medium.setTypeface(ApplicationServices.typeFaceDoubleBlast);
Hard = (TextView) findViewById(R.id.HardText);
Hard.setTypeface(ApplicationServices.typeFaceDoubleBlast);

mBackButton = ( Button ) findViewById ( R.id. BackButton );
mBackButton.setOnClickListener(mBack_Clicked);

gridView = (GridView) findViewById(R.id.LevelSelectGrid);
gridView.setAdapter(new ImageAdapter(this));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {

// Sending image id to FullScreenActivity
Intent i = new Intent(getApplicationContext(), DoubleBlastGameActivity.class);
// passing array index
if(position >= 0 && position < 4)
{
i.putExtra("level", 1);
}
else if(position >= 4 && position < 8)
{
i.putExtra("level", 2);
}
else if(position >= 8 && position < 12)
{
i.putExtra("level", 3);
}

startActivity(i);
}
});
}

public View.OnClickListener mBack_Clicked = new View.OnClickListener() {

public void onClick(View v) {

Intent intend = new Intent(getBaseContext(), MainMenuActivity.class );
startActivity(intend);
}
};
public class ImageAdapter extends BaseAdapter {

private Context context;
public Integer[] mLevelIcon;
public String[] mLevelId;

public ImageAdapter(Context contextTemp) {
this.context = contextTemp;
mLevelId = new String[12];
mLevelIcon = new Integer[12];
for (int i = 0; i < mLevelId.length; i++) {
mLevelId[i] = Integer.toString(i + 1);
if(i + 1 <= ApplicationServices.gameConfigStructure.lastCompletedLevelInt )
mLevelIcon[i] = R.drawable.levelbutton;
else
mLevelIcon[i] = R.drawable.lock;
}

}

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

public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

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

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);

gridView = inflater.inflate(R.layout.level_button, null);

TextView textview = new TextView(context);
textview = (TextView) gridView.findViewById(R.id.LevelID);
textview.setText(mLevelId[position]);
textview.setTypeface(ApplicationServices.typeFaceDoubleBlast);

if(position >= ApplicationServices.gameConfigStructure.lastCompletedLevelInt )
{
textview.setVisibility(View.INVISIBLE);
}

LevelSelectButton button = new LevelSelectButton(context);
button = (LevelSelectButton) gridView
.findViewById(R.id.levelSelectButton1);
button.setImageResource(mLevelIcon[position]);

} else {
gridView = convertView;
}
return gridView;
}

}
}

这是关卡选择屏幕的屏幕截图:

enter image description here

如您所见,第一个关卡已解锁,理想情况下我希望只有解锁的关卡才能点击。但目前允许进入任意关卡。

如何关闭锁定级别的点击?

最佳答案

您应该修改 ImageAdapter 类的 getView()。您需要添加 setEnabled(false)View.setFocusable(false)View.setClickable(false)到项目 View ,在您的情况下是 gridView。

if (position >= ApplicationServices.gameConfigStructure.lastCompletedLevelInt) {
textview.setVisibility(View.INVISIBLE);
gridView.setEnabled(false); // Set enable false to these views
// Or combination of below
// gridView.setFocusable(false);
// gridView.setClickable(false);
}

另一种方法是覆盖 Adapter 类的 isEnabled(),正如 user543 在他的回答中添加的那样

@Override
public boolean isEnabled(int position) {
if (position >= ApplicationServices.gameConfigStructure.lastCompletedLevelInt) {
return false;
}
return true;
}

关于android - 为 GridView Android 中的选定项目禁用 onClick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28336475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com