gpt4 book ai didi

Android - GridView 强制更新数据更改

转载 作者:行者123 更新时间:2023-11-30 02:10:25 25 4
gpt4 key购买 nike

我已经实现了这个示例(2. 自定义适配器示例) http://www.mkyong.com/android/android-gridview-example/并且有效。

然后我想用一组新数据“刷新”数据,直到我这样做才起作用:

imageAdapter.notifyDataSetChanged();

然后删除 ImageAdapter getView 方法中的以下检查:

 if (convertView == null) {

这是我当前的 getView 方法

public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View gridView;

// if (convertView == null) { // stopped my GridView from updating !!
if (true)
{
gridView = new View(context);

// get layout from mobile.xml
gridView = inflater.inflate(R.layout.mobile, null);

// set value into textview
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);

textView.setText(mobileValues[position]);


// set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);

imageView.setImageResource(R.drawable.square);


} else {
gridView = (View) convertView;
}

return gridView;
}

我担心它现在一遍又一遍地进行不必要的处理 - 即多次膨胀 View ?

每次调用时我都应该创建一个新的 GridView 吗?

最佳答案

它不起作用,因为下面的行

   TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);

textView.setText(mobileValues[position]);


// set image based on selected text
ImageView imageView = (ImageView) gridView
.findViewById(R.id.grid_item_image);

imageView.setImageResource(R.drawable.square);

跳出 if/else。检查 if (convertView == null) 是必要的。如果你没有它,你将使用 n == getCount() 膨胀 n 不同的 View 。对于 n 大,这将是一个问题。你可能想要实现 android ViewHolder模式,为您的用户提供最佳的用户体验。

正如@Vzsg 正确指出的那样,也摆脱了 gridView = new View(context);。这是一个额外的无用分配

关于Android - GridView 强制更新数据更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30187147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com