最近在做一个OCR相关的应用,识别内容用listview存储,每个item中包括一个显示识别内容的text和显示结果的image。
public class ResultListItem {
private int imgId;
private String text;
public ResultListItem(int imgId,String text){
this.imgId = imgId;
this.text = text;
}
public String getText() {
return text;
}
public int getImgId() {
return imgId;
}
}
既然是自定义的listview就需要一个adapter进行适配
public class ResultListAdapter extends ArrayAdapter<ResultListItem> {
private int textViewId;
class ViewHolder{
ImageView image;
TextView text;
}
public ResultListAdapter(Context context,int textViewResourceId,List<ResultListItem> list){
super(context,textViewResourceId,list);
textViewId = textViewResourceId;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ResultListItem resultListItem = getItem(position);
View view;
ViewHolder viewHolder;
if (convertView == null){
view = LayoutInflater.from(getContext()).inflate(textViewId,parent,false);
viewHolder = new ViewHolder();
viewHolder.image = view.findViewById(R.id.result_image);
viewHolder.text = view.findViewById(R.id.result_text);
view.setTag(viewHolder);//viewHolder存储在view中
}else{
view = convertView;
viewHolder = (ViewHolder)view.getTag();
}
viewHolder.text.setText(resultListItem.getText());
viewHolder.image.setImageResource(resultListItem.getImgId());
return view;
}
}
剩下的就是在listview所在的界面调用就好了