在ListView中设置项目不可点击并将其保存到首选项

时间:2014-12-09 20:50:32

标签: android listview android-listview sharedpreferences

我的代码需要帮助。只是提到我在编程和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;
                        }
                    }
                };

0 个答案:

没有答案