AutoCompleteTextView实现自动提示

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

第二步,这个时候系统会报错,打开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文件

MainActivity.java  

[java] view plaincopyprint?  
01.package com.example.ui_listview01;    
02.    
03.    
04.import java.util.ArrayList;    
05.import java.util.List;    
06.    
07.    
08.import android.app.Activity;    
09.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.}    
package com.example.ui_listview01;  


import java.util.ArrayList;  
import java.util.List;  


import android.app.Activity;  
import android.os.Bundle;  
import android.view.Menu;  
import android.view.View;  
import android.widget.AdapterView;  
import android.widget.Toast;  
import android.widget.AdapterView.OnItemClickListener;  
import android.widget.ListView;  


import com.example.ui_listview01.adpater.FruitAdapter;  
import com.example.ui_listview01.model.Fruit;  


public class MainActivity extends Activity {  
private ListView lvFruits;  
//1.准备好数据源  
private List<Fruit> fruitList = new ArrayList<Fruit>();  


@Override  
protected void onCreate(Bundle savedInstanceState) {  
super.onCreate(savedInstanceState);  
setContentView(R.layout.activity_main);  
//1.准备好数据源  
initFruits();  

lvFruits = (ListView) findViewById(R.id.lvFruits);  

//2.创建Adapter  
        FruitAdapter adapter=new FruitAdapter(this, R.layout.fruit_item,fruitList);  

        //3.绑定AdapterView和Adapter之间的关联  
lvFruits.setAdapter(adapter);  
lvFruits.setOnItemClickListener(new OnItemClickListener() {  


public void onItemClick(AdapterView<?> adapterView, View view, int position,  
long id) {  
   Fruit fruit=fruitList.get(position);  
   Toast.makeText(MainActivity.this, fruit.getName(), Toast.LENGTH_SHORT).show();  
}  
});  






}  


private void initFruits() {  
Fruit apple = new Fruit("潇湘夜雨", R.drawable.p1,"今天好高兴啊!","1分钟前");  
fruitList.add(apple);  
Fruit banana = new Fruit("小小", R.drawable.p2,"今天吃了好多啊!","2分钟前");  
fruitList.add(banana);  
Fruit orange = new Fruit("青春无悔", R.drawable.p3,"你今天多的怎么样啊?","3分钟前");  
fruitList.add(orange);  
Fruit watermelon = new Fruit("小丸子", R.drawable.p4,"最近如何呀?","1小时前");  
fruitList.add(watermelon);  
Fruit pear = new Fruit("米粒", R.drawable.p5,"过年好啊!","1.5小时前");  
fruitList.add(pear);  
Fruit grape = new Fruit("丽丽", R.drawable.p6,"我今天中午在学校吃了好多呀!","2小时前");  
fruitList.add(grape);  
Fruit pineapple = new Fruit(" 嘻嘻", R.drawable.p7,"你最近过的咋样啊!","6小时前");  
fruitList.add(pineapple);  
Fruit strawberry = new Fruit("晕晕", R.drawable.p8,"我今晚上吃啥呀","1天前");  
fruitList.add(strawberry);  
Fruit cherry = new Fruit("哈哈", R.drawable.p10,"再见了,各位朋友~","1周前");  
fruitList.add(cherry);  



}  


@Override  
public boolean onCreateOptionsMenu(Menu menu) {  
// Inflate the menu; this adds items to the action bar if it is present.  
getMenuInflater().inflate(R.menu.main, menu);  
return true;  
}  


}  



FruitAdapter.java  

[java] view plaincopyprint?  
01.package com.example.ui_listview01.adpater;    
02.    
03.    
04.import java.util.List;    
05.    
06.    
07.import android.content.Context;    
08.import android.view.LayoutInflater;    
09.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.}    
package com.example.ui_listview01.adpater;  


import java.util.List;  


import android.content.Context;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ArrayAdapter;  
import android.widget.BaseAdapter;  
import android.widget.ImageView;  
import android.widget.TextView;  


import com.example.ui_listview01.R;  
import com.example.ui_listview01.model.Fruit;  


//存在问题:在FruitAdapter的getView()方法中每次都将布局重新加载了一遍,当ListView快速滚动的时候这就会成为性能的瓶颈  
public class FruitAdapter extends ArrayAdapter<Fruit> {  
private int resourceId;  
public FruitAdapter(Context context, int textViewResourceId,  
List<Fruit> data) {  
super(context, textViewResourceId, data);  
resourceId=textViewResourceId;  
}  


// 这个方法在每个子项被滚动到屏幕内的时候会被调用  
@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
Fruit fruit = getItem(position);  
View view=LayoutInflater.from(getContext()).inflate(resourceId, null);  
ImageView ivFruit=(ImageView) view.findViewById(R.id.ivFruit);  
TextView tvFruit=(TextView) view.findViewById(R.id.tvFruit);  
TextView textView=(TextView)view.findViewById(R.id.textView);  
TextView textView2=(TextView)view.findViewById(R.id.textView2);  
ivFruit.setImageResource(fruit.getImageId());  
tvFruit.setText(fruit.getName());  
textView.setText(fruit.getText());  
textView2.setText(fruit.getTime());  
return view;  
}  











}  



FruitAdapterImprove1.java  

[java] view plaincopyprint?  
01.package com.example.ui_listview01.adpater;    
02.    
03.    
04.import android.content.Context;    
05.import android.view.LayoutInflater;    
06.import android.view.View;    
07.import android.view.ViewGroup;    
08.import android.widget.ArrayAdapter;    
09.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.}    
package com.example.ui_listview01.adpater;  


import android.content.Context;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ArrayAdapter;  
import android.widget.ImageView;  
import android.widget.TextView;  


import com.example.ui_listview01.R;  
import com.example.ui_listview01.model.Fruit;  


//存在问题:虽然现在已经不会再重复去加载布局,但是每次在getView()方法中还是会调用View的findViewById()方法来获取一次控件的实例。  
public class FruitAdapterImprove1 extends ArrayAdapter {  


private int resourceId;  


public FruitAdapterImprove1(Context context, int textViewResourceId) {  
super(context, textViewResourceId);  
resourceId = textViewResourceId;  
}  


// 这个方法在每个子项被滚动到屏幕内的时候会被调用  
//getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用  
@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
Fruit fruit = (Fruit) getItem(position);  
View view=null;  
if(convertView==null)  
  view = LayoutInflater.from(getContext()).inflate(resourceId, null);  
else  
  view=convertView;  
ImageView fruitImage = (ImageView) view.findViewById(R.id.ivFruit);  
TextView fruitName = (TextView) view.findViewById(R.id.tvFruit);  
fruitImage.setImageResource(fruit.getImageId());  
fruitName.setText(fruit.getName());  
return view;  
}  


}  



FruitAdapterImprove2.doc  

[java] view plaincopyprint?  
01.package com.example.ui_listview01.adpater;    
02.    
03.    
04.import android.content.Context;    
05.import android.view.LayoutInflater;    
06.import android.view.View;    
07.import android.view.ViewGroup;    
08.import android.widget.ArrayAdapter;    
09.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.}    
package com.example.ui_listview01.adpater;  


import android.content.Context;  
import android.view.LayoutInflater;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.ArrayAdapter;  
import android.widget.ImageView;  
import android.widget.TextView;  


import com.example.ui_listview01.R;  
import com.example.ui_listview01.model.Fruit;  


//我们新增了一个内部类ViewHolder,用于对控件的实例进行缓存。  
//当convertView为空的时候,创建一个ViewHolder对象,并将控件的实例都存放在ViewHolder里,然后调用View的setTag()方法,将ViewHolder对象存储在View中。  
//当convertView不为空的时候则调用View的getTag()方法,把ViewHolder重新取出。  
//这样所有控件的实例都缓存在了ViewHolder里,就没有必要每次都通过findViewById()方法来获取控件实例了。  
public class FruitAdapterImprove2 extends ArrayAdapter {  


private int resourceId;  


public FruitAdapterImprove2(Context context, int textViewResourceId) {  
super(context, textViewResourceId);  
resourceId = textViewResourceId;  
}  


// 这个方法在每个子项被滚动到屏幕内的时候会被调用  
// getView()方法中还有一个convertView参数,这个参数用于将之前加载好的布局进行缓存,以便之后可以进行重用  
@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
Fruit fruit = (Fruit) getItem(position);  
View view = null;  
ViewHolder viewHolder;  
if (convertView == null) {  
view = LayoutInflater.from(getContext()).inflate(resourceId, null);  
viewHolder = new ViewHolder();  
viewHolder.ivFruit = (ImageView) view.findViewById(R.id.ivFruit);  
viewHolder.tvFruit = (TextView) view.findViewById(R.id.tvFruit);  
view.setTag(viewHolder);  
} else {  
view = convertView;  
viewHolder = (ViewHolder) convertView.getTag();  
}  
viewHolder.ivFruit.setImageResource(fruit.getImageId());  
viewHolder.tvFruit.setText(fruit.getName());  
return view;  
}  


class ViewHolder {  


ImageView ivFruit;  


TextView tvFruit;  


}  


}  


Fruit.java  

[java] view plaincopyprint?  
01.package com.example.ui_listview01.model;    
02.    
03.    
04.public class Fruit {    
05.private String name;    
06.private int imageId;    
07.private String text;    
08.private String time;    
09.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.}    
package com.example.ui_listview01.model;  


public class Fruit {  
private String name;  
private int imageId;  
private String text;  
private String time;  
public Fruit(String name, int imageId, String text, String time) {  
super();  
this.name = name;  
this.imageId = imageId;  
this.text = text;  
this.time = time;  
}  
public String getName() {  
return name;  
}  
public void setName(String name) {  
this.name = name;  
}  
public int getImageId() {  
return imageId;  
}  
public void setImageId(int imageId) {  
this.imageId = imageId;  
}  
public String getText() {  
return text;  
}  
public void setText(String text) {  
this.text = text;  
}  
public String getTime() {  
return time;  
}  
public void setTime(String time) {  
this.time = time;  
}  







}  


fruit_item.xml  

[html] view plaincopyprint?  
01.<?xml version="1.0" encoding="utf-8"?>    
02.<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
03.    android:layout_width="match_parent"    
04.    android:layout_height="wrap_content"    
05.    android:orientation="horizontal" >    
06.    
07.    
08.    <ImageView    
09.        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>    
<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    android:orientation="horizontal" >  


    <ImageView  
        android:id="@+id/ivFruit"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:src="@drawable/p1" />  


    <TextView  
        android:id="@+id/tvFruit"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_margin="10dp"  
        android:layout_marginLeft="27dp"  
        android:layout_toRightOf="@+id/ivFruit"  
        android:text="Apple" />  


    <TextView  
        android:id="@+id/textView"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignLeft="@+id/tvFruit"  
        android:layout_below="@+id/tvFruit"  
        android:layout_marginLeft="21dp"  
        android:text="今天真高兴" />  


    <TextView  
        android:id="@+id/textView2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_alignBaseline="@+id/tvFruit"  
        android:layout_alignBottom="@+id/tvFruit"  
        android:layout_alignParentRight="true"  
        android:layout_marginRight="16dp"  
        android:text="TextView" />  


</RelativeLayout>  


activity_main.xml  

[html] view plaincopyprint?  
01.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
02.    xmlns:tools="http://schemas.android.com/tools"    
03.    android:id="@+id/LinearLayout1"    
04.    android:layout_width="match_parent"    
05.    android:layout_height="match_parent"    
06.    android:orientation="vertical"    
07.    tools:context=".MainActivity" >    
08.    
09.    
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>    
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:id="@+id/LinearLayout1"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    android:orientation="vertical"  
    tools:context=".MainActivity" >  


    <ListView  
        android:id="@+id/lvFruits"  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content" >  
    </ListView>  


</LinearLayout>  




AndroidManifest.xml  

[html] view plaincopyprint?  
01.<?xml version="1.0" encoding="utf-8"?>    
02.<manifest xmlns:android="http://schemas.android.com/apk/res/android"    
03.    package="com.example.ui_listview01"    
04.    android:versionCode="1"    
05.    android:versionName="1.0" >    
06.        
07.    
08.    
09.    <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>
基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值