顯示具有 android -- ListView 標籤的文章。 顯示所有文章
顯示具有 android -- ListView 標籤的文章。 顯示所有文章

2012年8月17日 星期五

ListActivity & ExpandableListView



ListActivity (Multiple Choice + Single Choice + Header/Footer)

Multiple Choice:




public class Cq_MyListActivityMultipleChoice extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        
        
        String [] values1 = new String []{"蘋果", "香吉士", "奇異果", "西洋梨", "西瓜", "哈密瓜", "葡萄", "杏子", "琵琶", "甘蔗", "龍眼", "荔枝", "橘子", "榴槤", "火龍果", "柚子", "小紅苺", "紅毛丹", "柿子", "楊桃"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, values1); 
        setListAdapter(adapter);
        
        ListView listview = getListView();
        listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
        
    }
}


********************************************
Single-Choice:


public class Cq_MyListActivitySingleChoice extends ListActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);
        
        
        String [] values1 = new String []{"蘋果""香吉士""奇異果""西洋梨""西瓜""哈密瓜""葡萄""杏子""琵琶""甘蔗""龍眼""荔枝""橘子""榴槤""火龍果""柚子""小紅苺""紅毛丹""柿子""楊桃"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, values1); 
        setListAdapter(adapter);
        
        ListView listview = getListView();
        listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        
    }
}


*******************************************
FOOTER & HEADER:




//Footer and Header A
        ListView listview = getListView();
        View header = getLayoutInflater().inflate(R.layout.header, null);
        View footer = getLayoutInflater().inflate(R.layout.footer, null);



TextView textview1 = (TextView)header.findViewById(R.id.headerTextView01);
textview1.setText(getEvent + " :   ");
TextView textview2 = (TextView)header.findViewById(R.id.headerTextView02);
textview2.setText(Integer.toString(str1.length) + " events");


        listview.addHeaderView(header);
        listview.addFooterView(footer);

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, android.R.id.text1, values1);
        listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
        setListAdapter(adapter);



************************************************
//Footer and Header B
如果用的是 ExpandableListActivity




//Set Header
        ListView listview = getExpandableListView();
        View header = getLayoutInflater().inflate(R.layout.mainheader, null);
        ImageView iconimg = (ImageView)header.findViewById(R.id.iconImage);
        TextView headertv1 = (TextView)header.findViewById(R.id.headerTextView01);
        TextView headertv2 = (TextView)header.findViewById(R.id.headerTextView02);
        iconimg.setImageResource(R.drawable.airplane1);
       
        headertv1.setText("旅遊英語實用會話");
        headertv2.setText("English Phrasal Books for Tourists");
        listview.addHeaderView(header);
        
        //Set Adapter
        mAdapter = new MyExpandableListAdapter(this);
        setListAdapter(mAdapter);
        

***********************************************

//example 2: Create a customized Header in a ListView under ListActivity      

ListView listview = getListView();
View header = getLayoutInflater().inflate(R.layout.header, null);

//取得 headerlayout.xml 裡的物件
TextView textview1 = (TextView)header.findViewById(R.id.headerTextView01);
TextView textview2 = (TextView)header.findViewById(R.id.headerTextView02);
textview1.setText(getEvent + " :   ");
textview2.setText(Integer.toString(str1.length) + " events");

listview.addHeaderView(header);

ArrayAdapter<String> adapter = new EventAdapter(this, str1, str2);
setListAdapter(adapter);

*************
附上:Customized    headerlayout.xml

<?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"
     >

          <TextView
            android:id="@+id/headerTextView01"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="5px"
            android:layout_marginRight="10px"
            android:layout_marginTop="1px"
            android:text="運動" 
            android:textSize = "20dp"
            android:textColor="@color/lime"/>

        <TextView
            android:id="@+id/headerTextView02"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginLeft="1px"
            android:layout_marginRight="2px"
            android:layout_marginTop="1px"
            android:layout_toRightOf="@+id/headerTextView01"
            android:text="項目"
            android:textSize = "20dp"
            android:textColor="@color/lime"/>


</RelativeLayout>


2012年6月17日 星期日

ListView 圓角化







準備一個箭頭的.png 檔

main.java:


public class ListViewCorneredBgActivity extends Activity {
private ListView mListView = null;
    
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ArrayList<String> list =new ArrayList<String>();
        list.add("1. 台北 (Taipei)");
        list.add("2. 台中 (Taichung)");
        list.add("3. 台南 (Tainan)");
        list.add("4. 基隆 (Keelung)");
        list.add("5. 台東 (Taitung)");
        list.add("6. 高雄 (Kaohsiung)");
        mListView =  (ListView)findViewById(R.id.list);
        mListView.setAdapter(new AppAdapter(this,list));
    }
    
    class AppAdapter extends BaseAdapter implements ListAdapter{

        Context context;
        ArrayList<String> list;
        AppAdapter(Context context,ArrayList<String> list){
            this.context=context;
            this.list=list;
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return list.size();
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return list.get(position);
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            TextView tv;
            if(convertView==null){
                convertView=LayoutInflater.from(context).inflate(R.layout.simple_item_2, null);
            }
            tv=(TextView)convertView.findViewById(R.id.name);
            tv.setText(list.get(position));
            return convertView;
        }
        
    }
}

*********************************************************
res/layout/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello"
         />
    <ListView android:id="@+id/list" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:layout_margin="20.0dip"
        android:cacheColorHint="@null" 
                android:listSelector="@drawable/shape_bg_listview"
        android:background="@drawable/shape_bg_listview"
        />

</LinearLayout>

res/layout/simple_item_2.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="wrap_content"
    >
    <TextView
        android:id="@+id/name"
        android:textSize="17.0sp"
        android:textColor="@android:color/black"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20.0dip"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        >
    </TextView>
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="20.0dip"
        android:src="@drawable/arrowright1"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        >
    </ImageView>
</RelativeLayout>

***********************
res/drawable/shape_bg_listview.xml::

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
       android:shape="rectangle"
       >
       <!--  
       <gradient  
       android:startColor="@android:color/white"  
       android:endColor="#FFCCCCCC"  
       android:angle="180" 
       />
        -->
          
       
       <stroke android:width="0px" 
       android:color="@android:color/white" 
       /> 
       <solid android:color="@android:color/white" 
       /> 
       <corners 
       android:bottomRightRadius="20px" 
       android:bottomLeftRadius="20px" 
       android:topLeftRadius="20px" 
       android:topRightRadius="20px" 
       />
</shape>


參考網站:http://www.cnblogs.com/shanzei/archive/2012/03/24/2415887.html




2012年3月18日 星期日

android -- ExpandableListView







package com.cq.expandable.listview01;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.TextView;
import android.widget.Toast;

public class ExpandableListView01Activity extends Activity {
    /** Called when the activity is first created. */

ExpandableListView expandablelistview;
public String [] tourism = {"ARRIVAL", "CITY", "SOCIABLE", "ENTERTAINMENT", "HOTEL", "MEDICAL TREATMENT"};
public String [] arrival = {"customs", "passport"};
public String [] city = {"general", "transport", "taxi"};
public String [] sociable = {"personal", "profession", "meeting", "language"};
public String [] entertainment = {"leisure", "theaters", "exhibition", "sports"};
public String [] hotel = {"general", "check-in", "staying", "check-out"};
public String [] medical = {"general", "surgeons", "dentist", "pharmacy"};

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        expandablelistview = (ExpandableListView)findViewById(R.id.ExpandableListView01);
        expandablelistview.setAdapter(new TreeViewAdapter(this));
    }
 
 
    public class TreeViewAdapter extends BaseExpandableListAdapter {

    private LayoutInflater inflater;
    private LayoutInflater inflater1;
   
public TreeViewAdapter(
Context c) {
this.inflater = LayoutInflater.from(c);
this.inflater1 = LayoutInflater.from(c);
}



@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}

@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return 0;
}

@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
View myView = inflater1.inflate(R.layout.child, null);
final int a = groupPosition;
final int b = childPosition;
//myView.setBackgroundResource(R.drawable.monkey32);
TextView textview = (TextView) myView.findViewById(R.id.TextView001);

textview.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(ExpandableListView01Activity.this, "Group= "+ Integer.toString(a) + " , Child = " + Integer.toString(b), Toast.LENGTH_LONG).show();
Intent intent = new Intent();
intent.setClass(ExpandableListView01Activity.this, IntentView.class);
startActivity(intent);
}
});

if(groupPosition==0){
                textview.setText(arrival[childPosition]);
            }else if(groupPosition==1){
                textview.setText(city[childPosition]);
            }else if(groupPosition==2){
                textview.setText(sociable[childPosition]);  
            }else if(groupPosition==3){
                textview.setText(entertainment[childPosition]);  
            }else if(groupPosition==4){
                textview.setText(hotel[childPosition]);  
            }else if(groupPosition==5){
                textview.setText(medical[childPosition]);  
            }  

return myView;
}



@Override
public int getChildrenCount(int groupPosition) {
if(groupPosition==0){
               return arrival.length;
           }else if(groupPosition==1){
               return city.length;
           }else if(groupPosition==2){
               return sociable.length;
           }else if(groupPosition==3){
               return entertainment.length;
           }else if(groupPosition==4){
               return hotel.length;
           }else {
               return medical.length;
           }
}

@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return null;
}

@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return tourism.length;
}

@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

View myView = inflater.inflate(R.layout.father, null);
//myView.setBackgroundResource(R.drawable.group);
            TextView textview = (TextView) myView.findViewById(R.id.TextView01);
            textview.setText(tourism[groupPosition]);
            textview.setTextColor(Color.YELLOW);
            return myView;
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}
   
    }
 

 
}

*********************************************
Main.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />
 
    <ExpandableListView android:id="@+id/ExpandableListView01"
        android:layout_width="200dp"
        android:layout_height="fill_parent"
        android:layout_x="20dip"
        android:layout_y="30dip"
        android:groupIndicator="@null"
     
        android:clickable="true"
        android:scrollbarAlwaysDrawHorizontalTrack="true">
</ExpandableListView>
<!-- android:childDivider="@drawable/child_divider"  -->

</LinearLayout>



*********************************************
Father.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"
    android:orientation="vertical" >

    <TextView android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16px"
        android:gravity="center">
</TextView>

</LinearLayout>


********
Child.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"
    android:orientation="horizontal" >

    <ImageView android:id="@+id/ImageView01"
        android:layout_height="30dp"
        android:layout_width="30dp"
        android:background="@drawable/monkey32">
   </ImageView>
 
   <TextView android:id="@+id/TextView001"
       android:layout_height="fill_parent"
        android:layout_width="fill_parent"
        android:gravity="center">
   </TextView>

</LinearLayout>

******************************
IntentView.java


package com.cq.expandable.listview01;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class IntentView extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
TextView textview = new TextView (this);
textview.setText("I LOVE TATA");
setContentView(textview);
}

}





2012年3月17日 星期六

ListView Example - Olympic Games Sports

ListView Example - Olympic Games Sports


Modified files:


1) 解決在 Header indexed 0 的問題;
2) 精簡java檔;夏季共用冬季的java檔:(可以刪除 SummerDisciplineItem.java,
                                                                         SummerEventItem.java,
                                                                         SummerEventWithDiscipline.java)
3)共用Eventitem.java (精簡化:刪除EventWithDiscipline.java)


WinterSports.java:



public class WinterSports extends ListActivity {

SportsData datahelper;
@Override
public void onCreate(Bundle winter) {
super.onCreate(winter);
    datahelper = new SportsData();
    
    
    //Header
ListView listview = getListView();
View header = getLayoutInflater().inflate(R.layout.header, null);
TextView textview1 = (TextView)header.findViewById(R.id.headerTextView01);
textview1.setText("Winter Olympic: ");  //textview1.setText(getEvent + " :  ");
TextView textview2 = (TextView)header.findViewById(R.id.headerTextView02);
textview2.setText(Integer.toString(datahelper.wintersportsEng.length) + " sports");
listview.addHeaderView(header);
    
//Set customized Adapter
    ArrayAdapter<String> adapter = new WinterAdapter(this, datahelper.wintersportsEng, datahelper.wintersportsChi, datahelper.wintersportsRus);
setListAdapter(adapter);
ListView list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if (position != 0) { //In order to skip the first row index (0) 
ListView listview = getListView();
String strTested = listview.getItemAtPosition(position).toString(); //取得 the selected row item 
// Toast.makeText(getApplicationContext(), strTested,
// Toast.LENGTH_SHORT).show();

int flag = 0;
for (int i = 0; i < datahelper.winterDisciplines.length; i++) { //to compare with data for discipline check
if (strTested == datahelper.winterDisciplines[i]) {
flag = 1;
}
}
if (flag == 0) { //sport with no disciplines
Intent intent = new Intent(WinterSports.this,Eventitem.class);
intent.putExtra("EVENT",strTested);
intent.putExtra("SEASON", "winter")
intent.putExtra("SportOrDiscipline", "sport");//
startActivity(intent);

} else if (flag == 1) { // sport with disciplies
// List discipline items
Intent intent = new Intent(WinterSports.this,DisciplineItem.class);
intent.putExtra("DISCIPLINE",strTested);
intent.putExtra("SEASON", "winter");
startActivity(intent);
}

}
   
}
});
}
}

*****************************************************
SummerSports.java


public class SummerSports extends ListActivity{

SportsData helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
helper = new SportsData();
//Header
ListView listview = getListView();
View header = getLayoutInflater().inflate(R.layout.header, null);
TextView textview1 = (TextView)header.findViewById(R.id.headerTextView01);
textview1.setText("Summer Olympic: ");  //textview1.setText(getEvent + " :  ");
TextView textview2 = (TextView)header.findViewById(R.id.headerTextView02);
textview2.setText(Integer.toString(helper.summersportsEng.length) + " sports");
listview.addHeaderView(header);
ArrayAdapter<String> adapter = new WinterAdapter(this, helper.summersportsEng, helper.summersportsChi, helper.summersportsRus);
setListAdapter(adapter);
ListView list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if (position != 0) {
ListView listview = getListView();
String disciplineTested = listview.getItemAtPosition(position).toString();
int flag = 0;
for (int i = 0; i< helper.summerDisciplines.length; i++ ){
if (helper.summerDisciplines[i] == disciplineTested){
flag = 1;
}
}
if (flag == 0){
Intent intent = new Intent(SummerSports.this, Eventitem.class);
intent.putExtra("EVENT", disciplineTested);
intent.putExtra("SEASON", "summer");
intent.putExtra("SportOrDiscipline", "sport");

startActivity(intent);
}else if (flag == 1){
//List discipline items
Intent intent = new Intent(SummerSports.this, DisciplineItem.class);
intent.putExtra("DISCIPLINE", disciplineTested);
intent.putExtra("SEASON", "summer");
startActivity(intent);
//Toast.makeText(SummerSports.this, helper.summersportsEng[position] + " has subitems!", Toast.LENGTH_SHORT).show();
}
}
}
});
}

}

********************************************
DisciplineItem.java

public class DisciplineItem extends ListActivity{

public static final String PATH = "/databases";
private final String DATABASE_FILENAME = "yundon.sqlite";
DBConnection dbHelper;
SQLiteDatabase db = openDatabase();
String getDiscipline;
String season;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null){
getDiscipline = extras.getString("DISCIPLINE");
season = extras.getString("SEASON");
}
Cursor c = getDisciplines(getDiscipline);
c.moveToFirst();
final String [] strEng = new String [c.getCount()];
String [] strChi = new String [c.getCount()];
String [] strRus = new String [c.getCount()];
for (int i=0; i < strEng.length; i++){
strEng [i] = c.getString(0);
strChi [i] = c.getString(1);
strRus [i] = c.getString(2);
c.moveToNext();
}
c.close();
ArrayAdapter <String> adapter = new WinterAdapter(this, strEng, strChi, strRus);
setListAdapter(adapter);
ListView list = getListView();
list.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
//Toast.makeText(DisciplineItem.this, strEng[position], Toast.LENGTH_SHORT).show();
Intent intent = new Intent(DisciplineItem.this, EventWithDiscipline.class);
intent.putExtra("EVENT", strEng[position]);
intent.putExtra("SEASON", season);
intent.putExtra("SportOrDiscipline", "discipline");

startActivity(intent);
}
});
}

public static class DBConnection extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "yundon.sqlite";
private static final int DATABASE_VERSION = 1;
final SQLiteDatabase db;
public DBConnection(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
db = this.getReadableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
public Cursor getDisciplines(String strSport){
// String table = "events";
// String [] columns = {"discipline", "disciplinechi", "disciplinerus"};
// String selection = "sport=?";
// String [] selectionArgs = new String [] {strSport};
// return db.query(table, columns, selection, selectionArgs, null, null, null);
String sql = "select distinct discipline, disciplinechi, disciplinerus from events where sport='" + strSport + "'";
Cursor c = db.rawQuery(sql, null);
return c;
}
public SQLiteDatabase openDatabase(){
try {
final String DATABASE_PATH = "/mnt/sdcard/databases";
final String PATH = "/databases";
File myDataPath = new File (DATABASE_PATH + PATH);
String databaseFilename = myDataPath + "/" + DATABASE_FILENAME;
if (!myDataPath.exists()){
myDataPath.mkdirs();
}
if (!(new File(databaseFilename)).exists()){
InputStream is = getResources().openRawResource(R.raw.yundon);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte [] buffer = new byte [8192];
int count = 0;
while ((count = is.read(buffer)) > 0){
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openDatabase(databaseFilename, null, RESULT_OK);
return database;
}catch (Exception e){
Log.i("DB", "DB_DIR_EXCEPTION: ");
}
return null;
}
}



********************************************
Eventitem.java



public class Eventitem extends ListActivity{

public static final String PATH = "/databases";
private final String DATABASE_FILENAME = "yundon.sqlite";
DBConnection dbHelper;
SQLiteDatabase db = openDatabase();
String getEvent;
String getSeason;
String getSportOrDiscipline;


@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
if (extras != null){
getEvent = extras.getString("EVENT");
getSeason = extras.getString("SEASON");
getSportOrDiscipline = extras.getString("SportOrDiscipline");

}
Cursor c = getEvents(
getEvent, getSportOrDiscipline, getSeason);

c.moveToFirst();
String [] str1 = new String [c.getCount()];
String [] str2 = new String [c.getCount()];
for (int i = 0; i < str1.length; i++){
str1[i] = c.getString(0);
str2[i] = c.getString(1);
c.moveToNext();
}
c.close();
//Header
ListView listview = getListView();
View header = getLayoutInflater().inflate(R.layout.header, null);
TextView textview1 = (TextView)header.findViewById(R.id.headerTextView01);
textview1.setText(getEvent + " :");  //textview1.setText(getEvent + " :  ");
TextView textview2 = (TextView)header.findViewById(R.id.headerTextView02);
textview2.setText(Integer.toString(str1.length) + " events");
listview.addHeaderView(header);
 
//Custom adapter: EventAdapter
ArrayAdapter<String> adapter = new EventAdapter(this, str1, str2);
setListAdapter(adapter);
}

public static class DBConnection extends SQLiteOpenHelper{

private static final String DATABASE_NAME = "yundon.sqlite";
private static final int DATABASE_VERSION = 1;
final SQLiteDatabase db;
public DBConnection(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
// TODO Auto-generated constructor stub
db = this.getReadableDatabase();
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
public Cursor getEvents(String strSport, String season){
String table = "events";
String [] columns = {"event", "pic"};
String selection = sportOrDiscipline + "=? AND " + season + "=?";
//原來String selection = "sport=? AND winter=?";
String [] selectionArgs = new String [] {strSport, "y"};
return db.query(table, columns, selection, selectionArgs, null, null, null);
}
public SQLiteDatabase openDatabase(){
try {
final String DATABASE_PATH = "/mnt/sdcard/databases";
final String PATH = "/databases";
File myDataPath = new File (DATABASE_PATH + PATH);
String databaseFilename = myDataPath + "/" + DATABASE_FILENAME;
if (!myDataPath.exists()){
myDataPath.mkdirs();
}
if (!(new File(databaseFilename)).exists()){
InputStream is = getResources().openRawResource(R.raw.yundon);
FileOutputStream fos = new FileOutputStream(databaseFilename);
byte [] buffer = new byte [8192];
int count = 0;
while ((count = is.read(buffer)) > 0){
fos.write(buffer, 0, count);
}
fos.close();
is.close();
}
SQLiteDatabase database = SQLiteDatabase.openDatabase(databaseFilename, null, RESULT_OK);
return database;
}catch (Exception e){
Log.i("DB", "DB_DIR_EXCEPTION: ");
}
return null;
}
}

************************************************