为了账号安全,请及时绑定邮箱和手机立即绑定

更新 GridView

更新 GridView

泛舟湖上清波郎朗 2021-06-27 11:06:35
当我点击一个项目时,我需要更新我的 gridView。我尝试了很多东西,但没有任何效果。我的活动有以下代码:public class GameActivity extends AppCompatActivity implements IGameView{public GridGame _gridGame = new GridGame();public GamePresenter _presenter = new GamePresenter(this, _gridGame);public ImageAdapter _imageAdapter = new ImageAdapter(this, _gridGame);@Overridepublic boolean onCreateOptionsMenu(Menu menu) {    // Inflate the menu; this adds items to the action bar if it is present.    getMenuInflater().inflate(R.menu.main, menu);    return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {    // Handle action bar item clicks here. The action bar will    // automatically handle clicks on the Home/Up button, so long    // as you specify a parent activity in AndroidManifest.xml.    int id = item.getItemId();    //noinspection SimplifiableIfStatement    if (id == R.id.action_help) {        Intent intent = new Intent(this, HelpActivity.class);        startActivity(intent);        return true;    }    return super.onOptionsItemSelected(item);}@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_game);    final Context context = this;    final GridView gridview = (GridView) findViewById(R.id.gridview);    gridview.setAdapter(_imageAdapter);    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {        public void onItemClick(AdapterView<?> parent, View v,                                int position, long id) {            _presenter.addPawn(position);            _imageAdapter.update(position, _presenter.actualPlayer);            Toast.makeText(context, "" + position,Toast.LENGTH_SHORT).show();        }    });}当我单击一个正方形(gridview 上的项目)时,我希望视图更新显示其他图像而不是正方形。当我在 ImageAdapter 上调用 update 方法但视图不更新时,更新完成。
查看完整描述

3 回答

?
缥缈止盈

TA贡献2041条经验 获得超4个赞

首先,您需要修复方法以返回适配器所需的数据,以将项目对象标识为


// return the new data from sourcein case of update

public Object getItem(int position) {

    return grid[position];

}


// don't send 0 always

public long getItemId(int position) {

    return position;

}


// invoke notifyDataSetChanged(); when there is a change in data source

public void update(int id, int player){

    grid[id] = R.drawable.ic_notifications_black_24dp;

    notifyDataSetChanged();

}


查看完整回答
反对 回复 2021-07-07
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

您需要通知适配器数据元素已更改。试试这个update()方法:


public void update(int id, int player){

    grid[id] = R.drawable.ic_notifications_black_24dp;

    notifyDataSetChanged();

}


查看完整回答
反对 回复 2021-07-07
?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

好的,我发现了问题,我在 中设置了网格,getView(int position, View convertView, ViewGroup parent);但它应该在构造函数中设置。问题是每次我点击一个项目时它都会重置网格中的值,所以该值没有改变。


查看完整回答
反对 回复 2021-07-07
  • 3 回答
  • 0 关注
  • 162 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信