ListView适配不同item范例
2016-06-14 08:55
369 查看
一、布局文件
1.mainActivity
2.webActivity
3.has_image_item
4.no_image_item
二、代码部分
1.实体类
2.适配器类
3.Activity类
1.mainActivity
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/listView" /> </RelativeLayout>
2.webActivity
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView" /> </RelativeLayout>
3.has_image_item
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/image" android:layout_width="80dp" android:layout_height="80dp" android:src="@drawable/ic_launcher"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout>
4.no_image_item
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/date" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/writer" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </LinearLayout>
二、代码部分
1.实体类
public class MyData { private String title; private String link; private String imgs; private String description; private String copyright; private String pubDate; private String comments; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getLink() { return link; } public void setLink(String link) { this.link = link; } public String getImgs() { return imgs; } public void setImgs(String imgs) { this.imgs = imgs; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getCopyright() { return copyright; } public void setCopyright(String copyright) { this.copyright = copyright; } public String getPubDate() { return pubDate; } public void setPubDate(String pubDate) { this.pubDate = pubDate; } public String getComments() { return comments; } public void setComments(String comments) { this.comments = comments; } public MyData(String title, String link, String imgs, String description, String copyright, String pubDate, String comments) { super(); this.title = title; this.link = link; this.imgs = imgs; this.description = description; this.copyright = copyright; this.pubDate = pubDate; this.comments = comments; } public MyData() { super(); } @Override public String toString() { return "MyData [title=" + title + ", link=" + link + ", imgs=" + imgs + ", description=" + description + ", copyright=" + copyright + ", pubDate=" + pubDate + ", comments=" + comments + "]"; } }
2.适配器类
public class MyBaseAdapter extends BaseAdapter { private Context context; private ArrayList<MyData> list; private static final int Type_No_Img = 0; private static final int Type_Has_Img = 1; public MyBaseAdapter(Context context, ArrayList<MyData> list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int position) { return list.get(position); } @Override public long getItemId(int position) { return position; } @Override public int getViewTypeCount() { return 2; } @Override public int getItemViewType(int position) { if (list.get(position).getImgs().endsWith(".jpg")) { return Type_Has_Img; } return Type_No_Img; } @Override public View getView(int position, View convertView, ViewGroup parent) { int type = getItemViewType(position); ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); switch (type) { case Type_No_Img: convertView = View.inflate(context, R.layout.no_image, null); holder.writer = (TextView) convertView .findViewById(R.id.writer); holder.writer.setText(list.get(position).getCopyright()); break; case Type_Has_Img: convertView = View.inflate(context, R.layout.has_image, null); holder.image = (ImageView) convertView.findViewById(R.id.image); BitmapUtils bitmapUtils=new BitmapUtils(context); bitmapUtils.display(holder.image, list.get(position).getImgs()); break; default: break; } holder.title = (TextView) convertView.findViewById(R.id.title); holder.date = (TextView) convertView.findViewById(R.id.date); holder.title.setText(list.get(position).getTitle()); holder.date.setText(list.get(position).getPubDate()); convertView.setTag(holder); } else { holder=(ViewHolder) convertView.getTag(); switch (type) { case Type_Has_Img: BitmapUtils bitmapUtils=new BitmapUtils(context); bitmapUtils.display(holder.image, list.get(position).getImgs()); break; case Type_No_Img: holder.writer.setText(list.get(position).getCopyright()); break; default: break; } holder.title.setText(list.get(position).getTitle()); holder.date.setText(list.get(position).getPubDate()); } return convertView; } class ViewHolder { ImageView image; TextView title, date, writer; } }
3.Activity类
public class WebActivity extends Activity { private static final String ATG = "WebActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); WebView webView = (WebView) findViewById(R.id.webView); Intent intent = getIntent(); String link = intent.getStringExtra("link"); Log.i(ATG, link); webView.setWebChromeClient(new WebChromeClient()); webView.loadUrl(link); } }
public class MainActivity extends Activity { private ListView listView; private MyData data; private ArrayList<MyData> list; Handler handler=new Handler(){ public void handleMessage(android.os.Message msg) { if(msg.what==0){ listView.setAdapter(new MyBaseAdapter(MainActivity.this, list)); } }; }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化控件 listView = (ListView) findViewById(R.id.listView); getInfo("http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass="); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent=new Intent(MainActivity.this,WebActivity.class); intent.putExtra("link", list.get(position).getLink()); startActivity(intent); } }); } private void getInfo(final String path) { new Thread() { public void run() { try { URL url = new URL(path); HttpURLConnection openConnection = (HttpURLConnection) url .openConnection(); int responseCode = openConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = openConnection .getInputStream(); getPull(inputStream); } } catch (Exception e) { e.printStackTrace(); } }; }.start(); } protected void getPull(InputStream inputStream) { // 获取工厂 try { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser newPullParser = factory.newPullParser(); newPullParser.setInput(inputStream, "utf-8"); int type = newPullParser.getEventType(); while (type != XmlPullParser.END_DOCUMENT) { String name = newPullParser.getName(); switch (type) { case XmlPullParser.START_DOCUMENT: list = new ArrayList<MyData>(); break; case XmlPullParser.START_TAG: if(name.equals("item")){ data = new MyData(); }else if(name.equals("title")){ data.setTitle(newPullParser.nextText()); }else if(name.equals("link")){ data.setLink(newPullParser.nextText()); }else if(name.equals("imgs")){ data.setImgs(newPullParser.nextText()); }else if(name.equals("description")){ data.setDescription(newPullParser.nextText()); }else if(name.equals("copyright")){ data.setCopyright(newPullParser.nextText()); }else if(name.equals("pubDate")){ data.setPubDate(newPullParser.nextText()); } break; case XmlPullParser.END_TAG: if(name.equals("item")){ list.add(data); } break; default: break; } type = newPullParser.next(); } } catch (Exception e) { e.printStackTrace(); } for (MyData m:list ) { System.out.println(m.toString()); } handler.sendEmptyMessage(0); } }
相关文章推荐
- Android组件(Broadcast Receiver)
- java-json日期字符串转换
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
- Google免费DNS服务器IP及全国主要DNS
- javascript--第九节-爱奇艺网站首页(轮播图)
- hdoj 1237 简单计算器《栈》
- DB2 SQL Error: SQLCODE=-668, SQLSTATE=57016错误解决方法
- javascript-第九节-键值或按钮控制div移动、轮播
- 接口的注意事项
- python 占位符 %s Format
- python sys os hashlib_MD5 模块
- Java使用Apache POI库读取Excel表格文档的示例
- Linux下python升级至2.7步骤
- post 和 get 的区别
- 关于C#相等运算符(==)重载的问题
- javascript-第八节-DOM对象实例集合
- HTML学习笔记--HTML的语法详解(必看)
- Python小工具之消耗系统指定大小内存
- Java 完成水吧点饮品系统开发 集合List<E>的学习
- [置顶] HDFS入门笔记------架构以及应用介绍