gpt4 book ai didi

java - Listview android 值在滚动中混淆

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

我正在使用 ArrayAdapter 在我的 Listview 中显示项目,但是当我滚动项目的顺序改变时,我猜 pb 在 getView 方法中,我试图添加一个 viewHolder 来解决这个问题但没有改变,我的 Listview 仍然困惑

这是我的适配器:

public class AdpaterFeed extends ArrayAdapter<String> {
String[] data;
int layoutResourceId;
Helper helper;

public AdpaterFeed(Context context, int layoutResourceId, String[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.data = data;
this.helper = Helper.getInstance();

}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) getContext().getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(layoutResourceId, parent, false);
viewHolder = new ViewHolder();
viewHolder.txt =(TextView) convertView.findViewById(R.id.text3);
viewHolder.webview = (WebView) convertView.findViewById(R.id.webview);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (getItem(position) != null) {

if (getItem(position).contains("<img")) {

viewHolder.webview.loadData(helper.rss[position], "text/html", "UTF-8");

} else {

viewHolder.txt.setText(Html.fromHtml(helper.title[position]));
viewHolder.webview.loadData(helper.rss[position], "text/html", "UTF-8");
}
}

return convertView;
}

public static class ViewHolder {
TextView txt;
WebView webview;

}

}

有谁能帮帮我吗?

最佳答案

更新:根据 OP 在评论中的精确度,我相信问题出在加载 web View 的方式上。也许您应该找到一种方法来控制 AsyncTasks 的加载,并确保将正确的 View 与正确的内容相匹配。


也许你的问题在于你没有删除第一部分的文本,如果:

if (getItem(position).contains("<img")) {
viewHolder.text.setVisibility(View.GONE); // maybe you want this here?
viewHolder.webview.loadData(getItem(position), "text/html", "UTF-8");
} else {
viewHolder.text.setVisibility(View.VISIBLE); // and compensate here
viewHolder.text.setText(Html.fromHtml(helper.title[position]));
viewHolder.webview.loadData(getItem(position), "text/html", "UTF-8");
}

如果您有不同种类的项目(带有文本或带有图像),也许您应该看看适配器中的 View 类型。这是一项非常重要的功能,允许针对不同类型的 View 使用不同的布局。


无关:关于这段代码:

TextView text = (TextView) convertView.findViewById(R.id.text3);
WebView wv = (WebView) convertView.findViewById(R.id.webview);

viewHolder = new ViewHolder();
viewHolder.txt = text;
viewHolder.webview = wv;

我发现跳过局部变量更简洁(而且绝对更短):

viewHolder = new ViewHolder();
viewHolder.txt = (TextView) convertView.findViewById(R.id.text3);
viewHolder.webview = (WebView) convertView.findViewById(R.id.webview);

关于java - Listview android 值在滚动中混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28348001/

25 4 0
文章推荐: java - ArrayList 的比较器不能正常工作