我根据水果列表改的微博评论

来源:互联网 发布:网络电视怎么搜索电影 编辑:程序博客网 时间:2024/04/29 19:32

 

 

第一步,导入水果列表的代码。然后打开Fruit.java,添加变量:private String text;private String time;分别的评论部分和显示时间的部分。添加Source-Generate Constructor using Fields,确定;再添加GetterSetter方法。

第二步,这个时候系统会报错,打开MainActivity.java,修改initFruits()这个方法,Fruit apple = new Fruit("潇湘夜雨", R.drawable.p1,"今天好高兴啊!","1分钟前");下边的也类似。

第三步,打开FruitAdapter.java,修改 getView这个方法。添加TextView textView=(TextView)view.findViewById(R.id.textView);
TextView textView2=(TextView)view.findViewById(R.id.textView2);
再添加textView.setText(fruit.getText());
textView2.setText(fruit.getTime());

第四步,自定义标题栏。

1.res/value下建立mytitlebar.xml文件

<?xml version="1.0" encoding="utf-8"?>

<resources xmlns:android="http://schemas.android.com/apk/res/android">

    <style name="myTitleBg">

        <item name="android:background">#FF0000</item>

    </style>

    <style name="myTheme" parent="android:Theme">

        <item name="android:windowNoTitle">false</item>

        <item name="android:windowTitleSize">30dp</item>

        <item name="android:windowTitleBackgroundStyle">@style/myTitleBg</item>

    </style>

</resources>

2.修改AndroidManifest.xml文件

 android:theme="@style/myTheme"

下边是代码:

 

MainActivity.java

[java] view plaincopyprint?
  1. package com.example.ui_listview01;  
  2.   
  3.   
  4. import java.util.ArrayList;  
  5. import java.util.List;  
  6.   
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.view.Menu;  
  11. import android.view.View;  
  12. import android.widget.AdapterView;  
  13. import android.widget.Toast;  
  14. import android.widget.AdapterView.OnItemClickListener;  
  15. import android.widget.ListView;  
  16.   
  17.   
  18. import com.example.ui_listview01.adpater.FruitAdapter;  
  19. import com.example.ui_listview01.model.Fruit;  
  20.   
  21.   
  22. public class MainActivity extends Activity {  
  23. private ListView lvFruits;  
  24. //1.准备好数据源   
  25. private List<Fruit> fruitList = new ArrayList<Fruit>();  
  26.   
  27.   
  28. @Override  
  29. protected void onCreate(Bundle savedInstanceState) {  
  30. super.onCreate(savedInstanceState);  
  31. setContentView(R.layout.activity_main);  
  32. //1.准备好数据源   
  33. initFruits();  
  34.   
  35. lvFruits = (ListView) findViewById(R.id.lvFruits);  
  36.   
  37. //2.创建Adapter   
  38.         FruitAdapter adapter=new FruitAdapter(this, R.layout.fruit_item,fruitList);  
  39.           
  40.         //3.绑定AdapterView和Adapter之间的关联   
  41. lvFruits.setAdapter(adapter);  
  42. lvFruits.setOnItemClickListener(new OnItemClickListener() {  
  43.   
  44.   
  45. public void onItemClick(AdapterView<?> adapterView, View view, int position,  
  46. long id) {  
  47.    Fruit fruit=fruitList.get(position);  
  48.    Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show();  
  49. }  
  50. });  
  51.   
  52.   
  53.   
  54.   
  55.   
  56.   
  57. }  
  58.   
  59.   
  60. private void initFruits() {  
  61. Fruit apple = new Fruit("潇湘夜雨", R.drawable.p1,"今天好高兴啊!","1分钟前");  
  62. fruitList.add(apple);  
  63. Fruit banana = new Fruit("小小", R.drawable.p2,"今天吃了好多啊!","2分钟前");  
  64. fruitList.add(banana);  
  65. Fruit orange = new Fruit("青春无悔", R.drawable.p3,"你今天多的怎么样啊?","3分钟前");  
  66. fruitList.add(orange);  
  67. Fruit watermelon = new Fruit("小丸子", R.drawable.p4,"最近如何呀?","1小时前");  
  68. fruitList.add(watermelon);  
  69. Fruit pear = new Fruit("米粒", R.drawable.p5,"过年好啊!","1.5小时前");  
  70. fruitList.add(pear);  
  71. Fruit grape = new Fruit("丽丽", R.drawable.p6,"我今天中午在学校吃了好多呀!","2小时前");  
  72. fruitList.add(grape);  
  73. Fruit pineapple = new Fruit(" 嘻嘻", R.drawable.p7,"你最近过的咋样啊!","6小时前");  
  74. fruitList.add(pineapple);  
  75. Fruit strawberry = new Fruit("晕晕", R.drawable.p8,"我今晚上吃啥呀","1天前");  
  76. fruitList.add(strawberry);  
  77. Fruit cherry = new Fruit("哈哈", R.drawable.p10,"再见了,各位朋友~","1周前");  
  78. fruitList.add(cherry);  
  79.   
  80.   
  81.   
  82. }  
  83.   
  84.   
  85. @Override  
  86. public boolean onCreateOptionsMenu(Menu menu) {  
  87. // Inflate the menu; this adds items to the action bar if it is present.  
  88. getMenuInflater().inflate(R.menu.main, menu);  
  89. return true;  
  90. }  
  91.   
  92.   
  93. }  

FruitAdapter.java

[java] view plaincopyprint?
  1. package com.example.ui_listview01.adpater;  
  2.   
  3.   
  4. import java.util.List;  
  5.   
  6.   
  7. import android.content.Context;  
  8. import android.view.LayoutInflater;  
  9. import android.view.View;  
  10. import android.view.ViewGroup;  
  11. import android.widget.ArrayAdapter;  
  12. import android.widget.BaseAdapter;  
  13. import android.widget.ImageView;  
  14. import android.widget.TextView;  
  15.   
  16.   
  17. import com.example.ui_listview01.R;  
  18. import com.example.ui_listview01.model.Fruit;  
  19.   
  20.   
  21. //存在问题:在FruitAdapter的getView()方法中每次都将布局重新加载了一遍,当ListView快速滚动的时候这就会成为性能的瓶颈  
  22. public class FruitAdapter extends ArrayAdapter<Fruit> {  
  23. private int resourceId;  
  24. public FruitAdapter(Context context, int textViewResourceId,  
  25. List<Fruit> data) {  
  26. super(context, textViewResourceId, data);  
  27. resourceId=textViewResourceId;  
  28. }  
  29.   
  30.   
  31. // 这个方法在每个子项被滚动到屏幕内的时候会被调用   
  32. @Override  
  33. public View getView(int position, View convertView, ViewGroup parent) {  
  34. Fruit fruit = getItem(position);  
  35. View view=LayoutInflater.from(getContext()).inflate(resourceId, null);  
  36. ImageView ivFruit=(ImageView) view.findViewById(R.id.ivFruit);  
  37. TextView tvFruit=(TextView) view.findViewById(R.id.tvFruit);  
  38. TextView textView=(TextView)view.findViewById(R.id.textView);  
  39. TextView textView2=(TextView)view.findViewById(R.id.textView2);  
  40. ivFruit.setImageResource(fruit.getImageId());  
  41. tvFruit.setText(fruit.getName());  
  42. textView.setText(fruit.getText());  
  43. textView2.setText(fruit.getTime());  
  44. return view;  
  45. }  
  46.   
  47.   
  48.   
  49.   
  50.   
  51.   
  52.   
  53.   
  54.   
  55.   
  56.   
  57. }  

 

FruitAdapterImprove1.java

[java] view plaincopyprint?
  1. package com.example.ui_listview01.adpater;  
  2.   
  3.   
  4. import android.content.Context;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.widget.ArrayAdapter;  
  9. import android.widget.ImageView;  
  10. import android.widget.TextView;  
  11.   
  12.   
  13. import com.example.ui_listview01.R;  
  14. import com.example.ui_listview01.model.Fruit;  
  15.   
  16.   
  17. //存在问题:虽然现在已经不会再重复去加载布局,但是每次在getView()方法中还是会调用View的findViewById()方法来获取一次控件的实例。  
  18. public class FruitAdapterImprove1 extends ArrayAdapter {  
  19.   
  20.   
  21. private int resourceId;  
  22.   
  23.   
  24. public FruitAdapterImprove1(Context context, int textViewResourceId) {  
  25. super(context, textViewResourceId);  
  26. resourceId = textViewResourceId;  
  27. }  
  28.   
  29.   
  30. // 这个方法在每个子项被滚动到屏幕内的时候会被调用   
  31. //getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用  
  32. @Override  
  33. public View getView(int position, View convertView, ViewGroup parent) {  
  34. Fruit fruit = (Fruit) getItem(position);  
  35. View view=null;  
  36. if(convertView==null)  
  37.   view = LayoutInflater.from(getContext()).inflate(resourceId, null);  
  38. else  
  39.   view=convertView;  
  40. ImageView fruitImage = (ImageView) view.findViewById(R.id.ivFruit);  
  41. TextView fruitName = (TextView) view.findViewById(R.id.tvFruit);  
  42. fruitImage.setImageResource(fruit.getImageId());  
  43. fruitName.setText(fruit.getName());  
  44. return view;  
  45. }  
  46.   
  47.   
  48. }  

 

FruitAdapterImprove2.doc

[java] view plaincopyprint?
  1. package com.example.ui_listview01.adpater;  
  2.   
  3.   
  4. import android.content.Context;  
  5. import android.view.LayoutInflater;  
  6. import android.view.View;  
  7. import android.view.ViewGroup;  
  8. import android.widget.ArrayAdapter;  
  9. import android.widget.ImageView;  
  10. import android.widget.TextView;  
  11.   
  12.   
  13. import com.example.ui_listview01.R;  
  14. import com.example.ui_listview01.model.Fruit;  
  15.   
  16.   
  17. //我们新增了一个内部类ViewHolder,用于对控件的实例进行缓存。  
  18. //当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。  
  19. //当convertView不为空的时候则调用View的getTag()方法,把ViewHolder重新取出。  
  20. //这样所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。  
  21. public class FruitAdapterImprove2 extends ArrayAdapter {  
  22.   
  23.   
  24. private int resourceId;  
  25.   
  26.   
  27. public FruitAdapterImprove2(Context context, int textViewResourceId) {  
  28. super(context, textViewResourceId);  
  29. resourceId = textViewResourceId;  
  30. }  
  31.   
  32.   
  33. // 这个方法在每个子项被滚动到屏幕内的时候会被调用   
  34. // getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用  
  35. @Override  
  36. public View getView(int position, View convertView, ViewGroup parent) {  
  37. Fruit fruit = (Fruit) getItem(position);  
  38. View view = null;  
  39. ViewHolder viewHolder;  
  40. if (convertView == null) {  
  41. view = LayoutInflater.from(getContext()).inflate(resourceId, null);  
  42. viewHolder = new ViewHolder();  
  43. viewHolder.ivFruit = (ImageView) view.findViewById(R.id.ivFruit);  
  44. viewHolder.tvFruit = (TextView) view.findViewById(R.id.tvFruit);  
  45. view.setTag(viewHolder);  
  46. else {  
  47. view = convertView;  
  48. viewHolder = (ViewHolder) convertView.getTag();  
  49. }  
  50. viewHolder.ivFruit.setImageResource(fruit.getImageId());  
  51. viewHolder.tvFruit.setText(fruit.getName());  
  52. return view;  
  53. }  
  54.   
  55.   
  56. class ViewHolder {  
  57.   
  58.   
  59. ImageView ivFruit;  
  60.   
  61.   
  62. TextView tvFruit;  
  63.   
  64.   
  65. }  
  66.   
  67.   
  68. }  


Fruit.java

[java] view plaincopyprint?
  1. package com.example.ui_listview01.model;  
  2.   
  3.   
  4. public class Fruit {  
  5. private String name;  
  6. private int imageId;  
  7. private String text;  
  8. private String time;  
  9. public Fruit(String name, int imageId, String text, String time) {  
  10. super();  
  11. this.name = name;  
  12. this.imageId = imageId;  
  13. this.text = text;  
  14. this.time = time;  
  15. }  
  16. public String getName() {  
  17. return name;  
  18. }  
  19. public void setName(String name) {  
  20. this.name = name;  
  21. }  
  22. public int getImageId() {  
  23. return imageId;  
  24. }  
  25. public void setImageId(int imageId) {  
  26. this.imageId = imageId;  
  27. }  
  28. public String getText() {  
  29. return text;  
  30. }  
  31. public void setText(String text) {  
  32. this.text = text;  
  33. }  
  34. public String getTime() {  
  35. return time;  
  36. }  
  37. public void setTime(String time) {  
  38. this.time = time;  
  39. }  
  40.   
  41.   
  42.   
  43.   
  44.   
  45.   
  46.   
  47. }  


fruit_item.xml

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="wrap_content"  
  5.     android:orientation="horizontal" >  
  6.   
  7.   
  8.     <ImageView  
  9.         android:id="@+id/ivFruit"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:src="@drawable/p1" />  
  13.   
  14.   
  15.     <TextView  
  16.         android:id="@+id/tvFruit"  
  17.         android:layout_width="wrap_content"  
  18.         android:layout_height="wrap_content"  
  19.         android:layout_margin="10dp"  
  20.         android:layout_marginLeft="27dp"  
  21.         android:layout_toRightOf="@+id/ivFruit"  
  22.         android:text="Apple" />  
  23.   
  24.   
  25.     <TextView  
  26.         android:id="@+id/textView"  
  27.         android:layout_width="wrap_content"  
  28.         android:layout_height="wrap_content"  
  29.         android:layout_alignLeft="@+id/tvFruit"  
  30.         android:layout_below="@+id/tvFruit"  
  31.         android:layout_marginLeft="21dp"  
  32.         android:text="今天真高兴" />  
  33.   
  34.   
  35.     <TextView  
  36.         android:id="@+id/textView2"  
  37.         android:layout_width="wrap_content"  
  38.         android:layout_height="wrap_content"  
  39.         android:layout_alignBaseline="@+id/tvFruit"  
  40.         android:layout_alignBottom="@+id/tvFruit"  
  41.         android:layout_alignParentRight="true"  
  42.         android:layout_marginRight="16dp"  
  43.         android:text="TextView" />  
  44.   
  45.   
  46. </RelativeLayout>  


activity_main.xml

[html] view plaincopyprint?
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/LinearLayout1"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"  
  7.     tools:context=".MainActivity" >  
  8.   
  9.   
  10.     <ListView  
  11.         android:id="@+id/lvFruits"  
  12.         android:layout_width="match_parent"  
  13.         android:layout_height="wrap_content" >  
  14.     </ListView>  
  15.   
  16.   
  17. </LinearLayout>  


 

AndroidManifest.xml

 

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.example.ui_listview01"  
  4.     android:versionCode="1"  
  5.     android:versionName="1.0" >  
  6.       
  7.   
  8.   
  9.     <uses-sdk  
  10.         android:minSdkVersion="8"  
  11.         android:targetSdkVersion="17" />  
  12.   
  13.   
  14.     <application  
  15.         android:allowBackup="true"  
  16.         android:icon="@drawable/ic_launcher"  
  17.         android:label="@string/app_name"  
  18.         android:theme="@style/myTheme" >  
  19.         <activity  
  20.             android:name="com.example.ui_listview01.MainActivity"  
  21.             android:label="@string/app_name" >  
  22.             <intent-filter>  
  23.                 <action android:name="android.intent.action.MAIN" />  
  24.   
  25.   
  26.                 <category android:name="android.intent.category.LAUNCHER" />  
  27.             </intent-filter>  
  28.         </activity>  
  29.     </application>  
  30.   
  31.   
  32. </manifest>  

 

0 0
原创粉丝点击