ListEntryContentAdapter.java (5014B)
1 /** 2 * 3 */ 4 package de.mtbnews.android.adapter; 5 6 import java.util.List; 7 8 import android.app.Activity; 9 import android.content.Context; 10 import android.content.SharedPreferences; 11 import android.graphics.Typeface; 12 import android.text.Html; 13 import android.text.format.DateFormat; 14 import android.text.method.LinkMovementMethod; 15 import android.view.LayoutInflater; 16 import android.view.View; 17 import android.view.ViewGroup; 18 import android.widget.BaseAdapter; 19 import android.widget.TextView; 20 import de.mtbnews.android.IBCApplication; 21 import de.mtbnews.android.R; 22 import de.mtbnews.android.tapatalk.wrapper.ListEntry; 23 24 /** 25 * @author dankert 26 * 27 */ 28 public class ListEntryContentAdapter extends BaseAdapter 29 { 30 31 /** Remember our context so we can use it when constructing views. */ 32 private Context mContext; 33 34 /** 35 * Hold onto a copy of the entire Contact List. 36 */ 37 38 private LayoutInflater inflator; 39 40 private List<? extends ListEntry> list; 41 42 private boolean containsBBCode; 43 private boolean containsHtml; 44 45 public ListEntryContentAdapter(Context context, List<? extends ListEntry> list) 46 { 47 mContext = context; 48 inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 49 this.list = list; 50 } 51 52 public ListEntryContentAdapter(Context context, List<? extends ListEntry> list, boolean containsBBCode, 53 boolean containsHtml) 54 { 55 mContext = context; 56 inflator = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 57 this.list = list; 58 this.containsBBCode = containsBBCode; 59 this.containsHtml = containsHtml; 60 } 61 62 public int getCount() 63 { 64 return list.size(); 65 } 66 67 public Object getItem(int position) 68 { 69 return list.get(position); 70 } 71 72 /** Use the array index as a unique id. */ 73 public long getItemId(int position) 74 { 75 return position; 76 77 } 78 79 /** 80 * @param convertView 81 * The old view to overwrite, if one is passed 82 * @returns a ContactEntryView that holds wraps around an ContactEntry 83 */ 84 public View getView(int position, View convertView, ViewGroup parent) 85 { 86 87 final ListEntry e = list.get(position); 88 final ViewHolder viewHolder; 89 90 if (convertView == null) 91 { 92 convertView = inflator.inflate(R.layout.rss_item, null); 93 94 // Linken Rand ggf. erhöhen. 95 // LinearLayout.LayoutParams params2 = new 96 // LinearLayout.LayoutParams( 97 // LinearLayout.LayoutParams.FILL_PARENT, 98 // LinearLayout.LayoutParams.WRAP_CONTENT); 99 // params2.setMargins(20,0,0,0); 100 // view.setLayoutParams(params2); 101 102 viewHolder = new ViewHolder(); 103 104 viewHolder.datum = (TextView) convertView.findViewById(R.id.item_date); 105 viewHolder.name = (TextView) convertView.findViewById(R.id.item_name); 106 viewHolder.title = (TextView) convertView.findViewById(R.id.item_title); 107 viewHolder.desc = (TextView) convertView.findViewById(R.id.item_description); 108 convertView.setTag(viewHolder); 109 } 110 else 111 { 112 viewHolder = (ViewHolder) convertView.getTag(); 113 } 114 115 if (e.getDate() != null) 116 viewHolder.datum.setText(DateFormat.getDateFormat(parent.getContext()).format(e.getDate()) + " " 117 + DateFormat.getTimeFormat(parent.getContext()).format(e.getDate())); 118 else 119 // viewHolder.datum.setEnabled(false); 120 viewHolder.datum.setText(""); 121 122 if (e.getName() != null) 123 viewHolder.name.setText(e.getName()); 124 else 125 // viewHolder.name.setEnabled(false); 126 viewHolder.name.setText(""); 127 128 if (e.getTitle() != null) 129 viewHolder.title.setText(e.getTitle()); 130 else 131 viewHolder.title.setEnabled(false); 132 133 if (e.isUnread()) 134 viewHolder.title.setTypeface(null, Typeface.BOLD); 135 else 136 viewHolder.title.setTypeface(null, Typeface.NORMAL); 137 138 if (e.getContent() != null) 139 { 140 SharedPreferences prefs = ((IBCApplication) ((Activity) mContext).getApplication()).prefs; 141 if (containsBBCode && prefs.getBoolean("parse_bbcode", false)) 142 { 143 String html; 144 // TextProcessor create = BBProcessorFactory.getInstance() 145 // .create(); 146 // html = create.process(e.getContent()); 147 html = e.getContent(); 148 html = new BBCodeConverter().process(html); 149 150 // Html.ImageGetter imageGetter = null; 151 // if (prefs.getBoolean("load_images", false)) 152 // // imageGetter = new ImageGetter(); 153 // imageGetter = new URLImageParser(viewHolder.desc, mContext); 154 155 // viewHolder.desc.setText(Html.fromHtml(html.toString(), 156 // imageGetter, null)); 157 viewHolder.desc.setText(Html.fromHtml(html)); 158 viewHolder.desc.setMovementMethod(LinkMovementMethod.getInstance()); 159 // viewHolder.desc.setAutoLinkMask(Linkify.ALL); 160 } 161 else if (containsHtml) 162 { 163 164 final CharSequence html = e.getContent(); 165 // if (prefs.getBoolean("load_images", false)) 166 // imageGetter = new URLImageParser(viewHolder.desc, mContext); 167 168 viewHolder.desc.setText(Html.fromHtml(html.toString())); 169 } 170 else 171 { 172 viewHolder.desc.setText(e.getContent()); 173 } 174 } 175 else 176 viewHolder.desc.setText(""); 177 178 return convertView; 179 } 180 181 static class ViewHolder 182 { 183 TextView datum; 184 TextView title; 185 TextView name; 186 TextView desc; 187 } 188 189 }