main.xml//主頁
<?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">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/txt_print" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/txt_add_contact" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/txt_print_name" />
</LinearLayout>
</LinearLayout>
listview_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<EditText
android:id="@+id/search"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/search" />
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="New Text"
android:id="@+id/textView"
android:background="#ffacff89" />
</RelativeLayout>
listview_item.xml//清單裡載入的項目
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/txt_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#ff91c6ff" />
<TextView
android:id="@+id/txt_number"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_name" />
</RelativeLayout>
Main.java
package com.androidbegin.filterlistviewtutorial;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
/**
* Created by win7 on 2015/3/31.
*/
public class Main extends Activity {
private Button button;
private TextView textView,txt_print_name,txt_add_contact;
String name;
String number;
public void onCreate(Bundle savedInstance){
super.onCreate(savedInstance);
setContentView(R.layout.main);
textView=(TextView)findViewById(R.id.txt_print);
txt_add_contact=(TextView)findViewById(R.id.txt_add_contact);
txt_print_name=(TextView)findViewById(R.id.txt_print_name);
// Retrieve data from MainActivity on item click event
Intent i = getIntent();
// Get the results of rank
name = i.getStringExtra("name");//檢索來自意圖擴展的數據
// Get the results of country
number = i.getStringExtra("number");//檢索來自意圖擴展的數據
txt_add_contact.setText(name);
txt_print_name.setText(number);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent_select_contact = new Intent(Main.this,MainActivity.class);
startActivity(intent_select_contact);
}
});
}
}
MainActivity.java
package com.androidbegin.filterlistviewtutorial;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Locale;
public class MainActivity extends Activity {
// Declare Variables
ListView list;
ListViewAdapter adapter;
EditText editsearch;
TextView textView;
String[] name;//儲存連絡人名子
String[] number;//儲存連絡人電話
int c = 0;
int totalpeople = 0;
ArrayList arraylist = new ArrayList();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_main);
textView = (TextView) findViewById(R.id.textView);
/*取得聯絡人姓名和電話*/
getPhoneBookData();
String s = String.valueOf(totalpeople);
textView.setText(s);
list = (ListView) findViewById(R.id.listview);
// Pass results to ListViewAdapter Class
adapter = new ListViewAdapter(this, arraylist);
// Binds the Adapter to the ListView
list.setAdapter(adapter);
// Locate the EditText in listview_main.xml
editsearch = (EditText) findViewById(R.id.search);
// Capture Text in EditText
editsearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
String text = editsearch.getText().toString().toLowerCase(Locale.getDefault());
adapter.filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
});
}
public void getPhoneBookData() {
Cursor cursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
totalpeople = cursor.getCount();//聯絡人總人數
name = new String[totalpeople];
number = new String[totalpeople];
while (cursor.moveToNext()) {
name[c] = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
number[c] = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
c++;
if (totalpeople == c) {
for (int i = 0; i < name.length; i++) {
WorldPopulation wp = new WorldPopulation(name[i], number[i]);
// Binds all strings into an array
arraylist.add(wp);//把資料加入WorldPopulation創建的wp
}
break;
}
}
}
}
ListViewAdapter.java
package com.androidbegin.filterlistviewtutorial;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class ListViewAdapter extends BaseAdapter {
// Declare Variables
Context mContext;
LayoutInflater inflater;
private List worldpopulationlist = null;
private ArrayList arraylist;
public ListViewAdapter(Context context, List worldpopulationlist) {
mContext = context;
this.worldpopulationlist = worldpopulationlist;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList();
this.arraylist.addAll(worldpopulationlist);
}
public class ViewHolder {
TextView txt_name;
TextView txt_number;
}
@Override
public int getCount() {
return worldpopulationlist.size();
}//worldpopulationlist資料的數量
@Override
public WorldPopulation getItem(int position) {
return worldpopulationlist.get(position);//worldpopulationlist資料的位置
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.listview_item, null);
// Locate the TextViews in listview_item.xml
holder.txt_name = (TextView) view.findViewById(R.id.txt_name);
holder.txt_number = (TextView) view.findViewById(R.id.txt_number);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// Set the results into TextViews
holder.txt_name.setText(worldpopulationlist.get(position).getName());
holder.txt_number.setText(worldpopulationlist.get(position).getNumber());
// Listen for ListView Item Click
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// Send single item click data to SingleItemView Class
Intent intent = new Intent(mContext, Main.class);
// Pass all data rank
intent.putExtra("name", (worldpopulationlist.get(position).getName()));
// Pass all data country
intent.putExtra("number", (worldpopulationlist.get(position).getNumber()));
mContext.startActivity(intent);
}
});
return view;
}
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase(Locale.getDefault());
worldpopulationlist.clear();
if (charText.length() == 0) {
worldpopulationlist.addAll(arraylist);
} else {
for (WorldPopulation wp : arraylist) {
if (wp.getName().toLowerCase(Locale.getDefault()).contains(charText)) {
worldpopulationlist.add(wp);
}
}
}
notifyDataSetChanged();
}
}
WorldPopulatio.java
package com.androidbegin.filterlistviewtutorial;
public class WorldPopulation {
private String name;
private String number;
public WorldPopulation(String rank, String country) {
this.name = rank;
this.number = country;
}
public String getName() {
return this.name;
}
public String getNumber() {
return this.number;
}
}
參考資料:
http://cookiesp.pixnet.net/blog/post/84190702-android-intent%26bundle-%E5%82%B3%E9%81%9E%E8%B3%87%E6%96%99%28%E5%8C%85%E5%90%AB%E5%82%B3%E9%81%9E%E8%87%AA%E5%AE%9A%E7%BE%A9%E7%89%A9
http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/
沒有留言:
張貼留言