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

解决方案 »

  1.   

    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;
        }
      

  2.   

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

  3.   

    打印过了,没有走else,上下滑动几次就这样了
      

  4.   

    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);
            }
    照着这个改吧,加一行代码
      

  5.   

    View.VISIBLE中间那行打印的,数据都有,就是没显示 View.VISIBLE上个恢复写错了
      

  6.   

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

  7.   

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

  8.   

    定义一个map保存已经显示过的view.
    map.put(positon,convertview);
    如果map中包含view,则
    convertview=map.get(postion);
    viewholder = (ViewHolder) convertView.getTag();这样就不出现重复刷新了.