Gridview图像根据android中的SharedPrefance数据位置进行更改

Gridview图像根据android中的SharedPrefance数据位置进行更改,android,gridview,Android,Gridview,我想根据SharedPrefance数据和位置更改GridView图像。 我有一个联系活动。在本活动中,我根据gridview位置在SharedPrefance中保存了一些数据 public class LinkActivity extends Activity { TextView textView; TextView textView2; String[] text = { "robin", "robin", "pavel", "robin", "pavel", "robin",

我想根据SharedPrefance数据和位置更改GridView图像。 我有一个联系活动。在本活动中,我根据gridview位置在SharedPrefance中保存了一些数据

public class LinkActivity extends Activity {

TextView textView;
TextView textView2;

String[] text = { "robin", "robin", "pavel", "robin", "pavel", "robin",
        "pavel", "robin", "pavel", "robin", "pavel", "robin", };

private Button button;

public static final String[] Name = { "name", "pavel", "rimon", "robin",
        "class", "osdsd", "sadajhjkhsd", "sadd", "sakdods", "psadkds", "sajdka",
        "asdjkjsdk" };

public static final String[] list = { "na", "p", "r", "rs", "c", "o",
        "asdasd", "sadadsad", "paa", "ron", "reod", "rodela" };

private EditText editText;

SharedPreferences sharedPreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_link);
    Bundle bundle = getIntent().getExtras();
    final int link = bundle.getInt("link");
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);

    button = (Button) findViewById(R.id.button1);
    editText = (EditText) findViewById(R.id.editText1);
    textView = (TextView) findViewById(R.id.textView1);

    textView2 = (TextView) findViewById(R.id.textView2);
    textView.setText(text[link]);

    if (sharedPreferences.contains(Name[link])) {

        textView2.setText(sharedPreferences.getString(Name[link], ""));
    }
    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String name = editText.getText().toString();

            if (name.equals(text[link])) {
                Toast.makeText(getBaseContext(), "Right", 200).show();

                name(Name[link], list[link]);
            } else {
                Toast.makeText(getBaseContext(), "Wrong", 200).show();
            }
        }

    });
}

public void name(String name, String tr) {
    Editor editor = sharedPreferences.edit();
    editor.putString(name, tr);
    editor.commit();
}
}

我的客户点评

public class CustomGridView extends BaseAdapter {

private Context context;
private final int[] imageid;
private final String[] web;

private int[] clickImage;

public CustomGridView(Context context, int[] imageid, String[] web) {
    super();
    this.context = context;
    this.imageid = imageid;
    this.web = web;
}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View grid;

    LayoutInflater inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        grid = new View(context);
        grid = inflater.inflate(R.layout.list_item, null);

        TextView textView = (TextView) grid.findViewById(R.id.textView1);

        ImageView imageView = (ImageView) grid
                .findViewById(R.id.imageView1);

        //ImageView imageView2 = (ImageView) grid
            //  .findViewById(R.id.imageView2);

        textView.setText(web[position]);
        imageView.setImageResource(imageid[position]);
        //imageView2.setImageResource(clickImage[position]);
    } else {
        grid = (View) convertView;
    }

    return grid;
}
}

在我的主要活动中,我想在我的SharedPrefance数据将保存的位置更改gridview图像

public class MainActivity extends Activity {

private GridView gridView;
int link;

String clickid;
SharedPreferences sharedPreferences;

public String[] web = { "google", "google", "google", "google", "google",
        "google", "google", "google", "google", "google", "google",
        "google"

};

public static final String[] Name = { "name", "pavel", "rimon", "robin",
        "class", "osdsd", "sadajhjkhsd", "sadd", "sakdods", "psadkds",
        "sajdka", "asdjkjsdk" };

public static final String[] list = { "na", "p", "r", "rs", "c", "o",
        "asdasd", "sadadsad", "paa", "ron", "reod", "rodela" };

String[] text = { "robin", "robin", "pavel", "robin", "pavel", "robin",
        "pavel", "robin", "pavel", "robin", "pavel", "robin", };

int[] imageId = { R.drawable.ic_launcher, R.drawable.ic_launcher,
        R.drawable.ic_launcher, R.drawable.ic_launcher,
        R.drawable.ic_launcher, R.drawable.ic_launcher,
        R.drawable.ic_launcher, R.drawable.ic_launcher,
        R.drawable.ic_launcher, R.drawable.ic_launcher,
        R.drawable.ic_launcher, R.drawable.ic_launcher, };

int[] signImage = { R.drawable.correct, R.drawable.correct,
        R.drawable.correct, R.drawable.correct, R.drawable.correct,
        R.drawable.correct, R.drawable.correct, R.drawable.correct,
        R.drawable.correct, R.drawable.correct, R.drawable.correct,
        R.drawable.correct };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    CustomGridView adapterCustomGridView = new CustomGridView(
            MainActivity.this, imageId, web);
    sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    // for (int i = 0; i < 11; i++) {

    // clickid = sharedPreferences.getString(Name[i], list[link]);
    // }

    gridView = (GridView) findViewById(R.id.gridView1);
    gridView.setAdapter(adapterCustomGridView);

    for (int i = 0; i < 11; i++) {
        String cliclString = sharedPreferences.getString(Name[i], list[i]);
        if (cliclString == text[i]) {
            adapterCustomGridView = new CustomGridView(MainActivity.this,
                    signImage, web);
        }
    }

    gridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long id) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(MainActivity.this,
                    LinkActivity.class);
            intent.putExtra("link", position);
            startActivity(intent);
        }
    });

}
公共类MainActivity扩展活动{
私有GridView GridView;
int链接;
字符串clickid;
SharedReferences SharedReferences;
公共字符串[]web={“谷歌”、“谷歌”、“谷歌”、“谷歌”、“谷歌”,
“谷歌”、“谷歌”、“谷歌”、“谷歌”、“谷歌”、“谷歌”、“谷歌”,
“谷歌”
};
公共静态最终字符串[]Name={“Name”、“pavel”、“rimon”、“robin”,
“类”、“osdsd”、“sadajhjkhsd”、“sadd”、“sakdods”、“PSADKDDS”,
“sajdka”、“asdjkjsdk”};
公共静态最终字符串[]列表={“na”、“p”、“r”、“rs”、“c”、“o”,
“asdasd”、“sadassad”、“paa”、“ron”、“reod”、“rodela”};
字符串[]text={“罗宾”、“罗宾”、“帕维尔”、“罗宾”、“帕维尔”、“罗宾”,
“帕维尔”、“罗宾”、“帕维尔”、“罗宾”、“帕维尔”、“罗宾”};
int[]imageId={R.drawable.ic_启动器,R.drawable.ic_启动器,
R.drawable.ic_发射器,R.drawable.ic_发射器,
R.drawable.ic_发射器,R.drawable.ic_发射器,
R.drawable.ic_发射器,R.drawable.ic_发射器,
R.drawable.ic_发射器,R.drawable.ic_发射器,
R.drawable.ic_发射器,R.drawable.ic_发射器,};
int[]符号图像={R.drawable.correct,R.drawable.correct,
R.drawable.correct,R.drawable.correct,R.drawable.correct,
R.drawable.correct,R.drawable.correct,R.drawable.correct,
R.drawable.correct,R.drawable.correct,R.drawable.correct,
R.drawable.correct};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CustomGridView adapterCustomGridView=新建CustomGridView(
MainActivity.this、imageId、web);
SharedReferences=PreferenceManager.GetDefaultSharedReferences(此);
//对于(int i=0;i<11;i++){
//clickid=SharedReferences.getString(名称[i],列表[link]);
// }
gridView=(gridView)findViewById(R.id.gridView1);
setAdapter(adapterCustomGridView);
对于(int i=0;i<11;i++){
String cliclString=SharedReferences.getString(名称[i],列表[i]);
if(cliclString==text[i]){
adapterCustomGridView=新建CustomGridView(MainActivity.this,
签名,网络);
}
}
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
内部位置,长id){
//TODO自动生成的方法存根
意向意向=新意向(MainActivity.this,
链接活动(类);
意向。额外(“链接”,位置);
星触觉(意向);
}
});
}
}

当我运行我的项目时,它会在所有gridview图像中显示clickImage。 我想在保存数据的特定位置显示单击图像。 我认为MainActivity SharedPrefance中的主要问题是,我使用了SharedPrefance的一些条件,因为我没有很好地读取和判断数据。
如何做到这一点。

首先,不要在getView中使用视图“网格”。使用convertView:

convertview = inflater.inflate(R.layout.list_item, null);

这就是if语句中应该做的所有事情。因此,接下来的所有操作,比如获取textview和imageview,以及添加文本,都是在if语句之外进行的。删除“else”。现在我假设每个位置有一个字符串和一个图像资源。在for循环中,您不必每次都调用适配器的构造函数。只需使用正确的字符串数组和int数组执行一次。您的int数组(包含资源)将与字符串数组具有相同的大小。您仍然可以在活动中使用for循环。使用它填充一个新的int[]:您将要传递到适配器的int[]。如果为true,则添加一项signImage,否则添加一项imageId。

请添加CustomGridView的代码。yap添加此@InnekedClippel