我有一个如下所示的基本适配器:
public class GridViewAdapter extends BaseAdapter {
Context cont;
........
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
View v;
TextView tv;
GridItemObject itemObject = (Constants.gridItemsList.get(arg0));
if (convertView == null) // if it’s not recycled, initialize some attributes
{
LayoutInflater li = (LayoutInflater) cont
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(R.layout.grid_item, null);
tv = (TextView) v.findViewById(R.id.grid_item_textView1);
if(itemObject.isvisited)
{
tv.setText(itemObject.letter);
}
}
}
else
{
v = (View) convertView;
}
return v;
}
Constants.gridItemsList 是 List < GridItemObject > 类型的静态列表,其中包含少量项目(文本集从 1 到 10),最初将 isvisited 属性设置为 false。
GridItemObject 是一个定义如下的类:
public class GridItemObject
{
public String letter;
public boolean isvisited;
}
我希望从另一个 gridview 刷新这个 gridview,如下所示:
public class CustomGridViewAdapter extends BaseAdapter {
Context cont;
GridViewAdapter adapter;
// setting the values in constructor....
@Override
public int getCount() {
return 10;
}
@Override
public View getView(int arg0, View convertView, ViewGroup arg2) {
View v;
TextView tv;
LayoutInflater li = (LayoutInflater) cont
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = li.inflate(R.layout.numbers_grid_item, null);
tv = (TextView) v.findViewById(R.id.numbers_grid_item_textView1);
tv.setText(arg0+"");
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
GridItemObject itemObject = (Constants.gridItemsList.get(arg0));
itemObject.isvisited = true;
adapter.notifyDataSetChanged();
}
});
我在我的活动中使用这个 gridview。
问题是,我无法从 CustomGridViewAdapter 刷新 GridViewAdapter 适配器。当我单击 CustomGridViewAdapter 的网格视图中的一个项目并检查发生了什么时,所有数字都混乱了。有人可以建议我如何从另一个刷新gridview(同时在单独的文件中使用自定义适配器)