我的代码需要帮助。只是提到我在编程和android世界中都是全新的,所以我的代码可能看起来很糟糕。
我想在列表视图中设置特定项目不可点击,并在下次打开应用或该活动时存储该信息。我可以使用共享偏好吗?这只是我代码的一部分,但我希望你能有所了解。
使用有关位置的共享偏好信息禁用特定视图的方法。我不知道在哪里放这个。因为如果我把它放在onClick方法中,那么首先需要点击某个项目,但我想在点击之前设置不可点击。
for(int i=0; i<11; i++){
View disableView = getViewByPosition(preferences2.getInt("POSITION"+i, 7), list);
disableView.setOnClickListener(null);
disableView.setEnabled(false);
}
按位置获取视图的方法
public View getViewByPosition(int pos, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (pos < firstListItemPosition || pos > lastListItemPosition ) {
return listView.getAdapter().getView(pos, null, listView);
} else {
final int childIndex = pos - firstListItemPosition;
return listView.getChildAt(childIndex);
}
我存储位置信息的对话框的OnClick方法。
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
if (((position + 1)*2)<=numberOfStars){
ImageView imageView = (ImageView) view.findViewById(R.id.flagImg);
imageView.setImageResource(flagImageId[position]);
TextView textView = (TextView) view.findViewById(R.id.countryName);
textView.setText(countryNames[position]);
editor.putInt("FLAG" + position, flagImageId[position]);
editor.putString("NAME" + position, countryNames[position]);
editor.putInt("POSITION" + position, position);
editor.commit();
view.setOnClickListener(null);
view.setEnabled(false);
} else{
Toast toast = Toast.makeText(UnlockFlagsActivity.this, "You dont have enough stars", Toast.LENGTH_LONG);
toast.show();
break;
}
case DialogInterface.BUTTON_NEGATIVE:
//No button clicked
break;
}
}
};