package com.jesusjzp.sanwensuibi; import java.nio.CharBuffer; import java.util.ArrayList; import android.content.Context; import android.text.Html; import android.text.Spanned; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.aphidmobile.utils.AphidLog; import com.aphidmobile.utils.UI; import com.jesusjzp.sanwensuibi.R; import com.jesusjzp.sanwensuibi.ArticleListAdapter.ViewHolder; public class ArticleReadViewAdapter extends BaseAdapter { private LayoutInflater inflater; private int position_str = 0; private CharBuffer buffer = CharBuffer.allocate(8000); private ArrayList<Integer> startPos = new ArrayList<Integer>(){{add(0);}}; private ArrayList<Integer> strlength = new ArrayList<Integer>(); private int curPage = 0; public ArticleReadViewAdapter(Context context, CharBuffer buffer) { inflater = LayoutInflater.from(context); this.buffer = buffer; } @Override public int getCount() { return 15; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = new ViewHolder(); View layout = convertView; if (layout == null) { layout = inflater.inflate(R.layout.readview, null); holder.readView = (ReadView)layout.findViewById(R.id.read_view); holder.textView = (TextView)layout.findViewById(R.id.page); layout.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } Log.v("created new view from adapter:", position+""); // set readview Log.v("Page "+position+" starts from", startPos.get(position)+""); buffer.position(startPos.get(position)); Spanned wordspan = Html.fromHtml(buffer.toString()); holder.readView.setText(wordspan); holder.readView.resize(); Log.v("str length", holder.readView.getCharNum()+""); int pageNum = position + 1; holder.textView.setText("- "+pageNum+" -"); if (position == 0) { startPos.add(0); } else { startPos.add(pageNum, startPos.get(pageNum-1)+holder.readView.getCharNum()); } return layout; } private class ViewHolder { public ReadView readView; public TextView textView; } }