Gridview图像根据android中的SharedPrefance数据位置进行更改
我想根据SharedPrefance数据和位置更改GridView图像。 我有一个联系活动。在本活动中,我根据gridview位置在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",
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