listview拖动优化问题

Android 码拜 10年前 (2015-04-26) 1168次浏览 0个评论
 

listview上下拖动,有些数据就不显示了,打印数据可以看到有数据,就是没显示,也用了ViewHolder优化还是没用,请问一下还能怎么优化吗

listview拖动优化问题
30分
什么类型的数据?还有麻烦贴一下adapter的代码
listview拖动优化问题
引用 1 楼 pengguohua1988 的回复:

什么类型的数据?还有麻烦贴一下adapter的代码

public final class ViewHolder {
    	TextView expr;
    	TextView result;
    	}
    // @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view;
        ViewHolder viewholder;
        if (convertView == null) {
        	convertView = mInflater.inflate(R.layout.history_item, parent, false);
            viewholder = new ViewHolder();
            viewholder.expr = (TextView) convertView.findViewById(R.id.historyExpr);
            viewholder.result = (TextView) convertView.findViewById(R.id.historyResult);
            convertView.setTag(viewholder);
        } else {
        	viewholder = (ViewHolder) convertView.getTag();
        }
        HistoryEntry entry = mEntries.elementAt(position);
        String base = entry.getBase();
        Log.v("lc", "base--"+base);
        if(!base.equals("")&&base.length()>0){
        	viewholder.expr.setText(base);
        	try {
        		String res = mEval.evaluate(base);
        		viewholder.result.setText("= " + res);
        	} catch (SyntaxException e) {
        		viewholder.result.setText(R.string.error);
        	}
        }else{
        	convertView.setVisibility(View.GONE);
        }
        return convertView;
    }
listview拖动优化问题
引用 1 楼 pengguohua1988 的回复:

什么类型的数据?还有麻烦贴一下adapter的代码

中间那行打印的,数据都有,就是没显示

listview拖动优化问题
10分
那你 在 if else 里 都打印一下 看看程序走哪个分支
listview拖动优化问题
引用 4 楼 WhyIComeHere 的回复:

那你 在 if else 里 都打印一下 看看程序走哪个分支

打印过了,没有走else,上下滑动几次就这样了
listview拖动优化问题

listview拖动优化问题
if(!base.equals(“”)&&base.length()>0){
convertView.setVisibility(View.Visiable);
            viewholder.expr.setText(base);
            try {
                String res = mEval.evaluate(base);
                viewholder.result.setText(“= ” + res);
            } catch (SyntaxException e) {
                viewholder.result.setText(R.string.error);
            }
        }else{
            convertView.setVisibility(View.GONE);
        }
照着这个改吧,加一行代码
listview拖动优化问题
View.VISIBLE

引用 3 楼 doudousang1 的回复:
Quote: 引用 1 楼 pengguohua1988 的回复:

什么类型的数据?还有麻烦贴一下adapter的代码

中间那行打印的,数据都有,就是没显示

 View.VISIBLE上个恢复写错了

listview拖动优化问题
引用 6 楼 pengguohua1988 的回复:

if(!base.equals(“”)&&base.length()>0){
convertView.setVisibility(View.Visiable);
            viewholder.expr.setText(base);
            try {
                String res = mEval.evaluate(base);
                viewholder.result.setText(“= ” + res);
            } catch (SyntaxException e) {
                viewholder.result.setText(R.string.error);
            }
        }else{
            convertView.setVisibility(View.GONE);
        }
照着这个改吧,加一行代码

太感谢了,确实是这个原因,刚才忘记说了每次滑到最后一行会走else的,谢谢哈

listview拖动优化问题
引用 4 楼 WhyIComeHere 的回复:

那你 在 if else 里 都打印一下 看看程序走哪个分支

刚才忘记说了每次滑到最后一行会走else的,就是这个原因 convertView.setVisibility(View.GONE);。。也谢谢你

listview拖动优化问题
定义一个map保存已经显示过的view.
map.put(positon,convertview);
如果map中包含view,则
convertview=map.get(postion);
viewholder = (ViewHolder) convertView.getTag();

这样就不出现重复刷新了.

listview拖动优化问题
引用 10 楼 dalor 的回复:

定义一个map保存已经显示过的view.
map.put(positon,convertview);
如果map中包含view,则
convertview=map.get(postion);
viewholder = (ViewHolder) convertView.getTag();

这样就不出现重复刷新了.

恩,这也是个优化的办法,学习了

listview拖动优化问题
引用 11 楼 doudousang1 的回复:
Quote: 引用 10 楼 dalor 的回复:

定义一个map保存已经显示过的view.
map.put(positon,convertview);
如果map中包含view,则
convertview=map.get(postion);
viewholder = (ViewHolder) convertView.getTag();

这样就不出现重复刷新了.

恩,这也是个优化的办法,学习了

回复晚了吗?没得到分儿~

listview拖动优化问题
引用 12 楼 dalor 的回复:
Quote: 引用 11 楼 doudousang1 的回复:
Quote: 引用 10 楼 dalor 的回复:

定义一个map保存已经显示过的view.
map.put(positon,convertview);
如果map中包含view,则
convertview=map.get(postion);
viewholder = (ViewHolder) convertView.getTag();

这样就不出现重复刷新了.

恩,这也是个优化的办法,学习了

回复晚了吗?没得到分儿~

你回复的时候我已经结贴了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明listview拖动优化问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!