08-20 17:19:32.790: D/dalvikvm(938): GC_EXTERNAL_ALLOC freed 52K, 51% free 2686K/5379K, external 0K/0K, paused 397ms
08-20 17:19:33.200: D/AndroidRuntime(938): Shutting down VM
08-20 17:19:33.200: W/dalvikvm(938): threadid=1: thread exiting with uncaught exception (group=0x40020560)
08-20 17:19:33.210: E/AndroidRuntime(938): FATAL EXCEPTION: main
08-20 17:19:33.210: E/AndroidRuntime(938): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.suishoukan/com.example.suishoukan.MainActivity}: java.lang.NullPointerException
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1834)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1850)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.access$1500(ActivityThread.java:125)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:941)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.os.Handler.dispatchMessage(Handler.java:99)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.os.Looper.loop(Looper.java:130)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.main(ActivityThread.java:3962)
08-20 17:19:33.210: E/AndroidRuntime(938): at java.lang.reflect.Method.invokeNative(Native Method)
08-20 17:19:33.210: E/AndroidRuntime(938): at java.lang.reflect.Method.invoke(Method.java:507)
08-20 17:19:33.210: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
08-20 17:19:33.210: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
08-20 17:19:33.210: E/AndroidRuntime(938): at dalvik.system.NativeStart.main(Native Method)
08-20 17:19:33.210: E/AndroidRuntime(938): Caused by: java.lang.NullPointerException
08-20 17:19:33.210: E/AndroidRuntime(938): at com.example.suishoukan.MainActivity.show(MainActivity.java:85)
08-20 17:19:33.210: E/AndroidRuntime(938): at com.example.suishoukan.MainActivity.onCreate(MainActivity.java:54)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1788)
08-20 17:19:33.210: E/AndroidRuntime(938): ... 11 morepackage com.example.suishoukan;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;import com.example.domain.Film;
import com.example.service.FilmService;
import com.example.test.FilmServiceTest;import android.app.TabActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;public class MainActivity extends TabActivity
{
//声明TabHost对象
TabHost mTabHost;
Button button1,button2,button3,button4;
FilmService filmService;
List<Film> films;
ListView listView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得TabHost对象
mTabHost = getTabHost();
/* 为TabHost添加标签 */
//新建一个newTabSpec(newTabSpec)
//设置其标签和图标(setIndicator)
//设置内容(setContent)
mTabHost.addTab(mTabHost.newTabSpec("tab_test1")
.setIndicator("榜单")
.setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2")
.setIndicator("节目表")
.setContent(R.id.textview2));
mTabHost.addTab(mTabHost.newTabSpec("tab_test3")
.setIndicator("收藏")
.setContent(R.id.textview3));
//设置当前显示哪一个标签
mTabHost.setCurrentTab(0);
filmService = new FilmService(this);
films = filmService.getScrollData(0,10);
listView = (ListView) this.findViewById(R.id.listView) ;
button1 = (Button) this.findViewById(R.id.button1);
button2 = (Button) this.findViewById(R.id.button2);
button3 = (Button) this.findViewById(R.id.button3);
button4 = (Button) this.findViewById(R.id.button4);
OnClickListener o = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(button1.getId()==v.getId()){
films = filmService.getScrollData(0,10);
}
else if(button2.getId()==v.getId()){
films = filmService.getScrollData(10,10);
}
else if(button3.getId()==v.getId()){
films = filmService.getScrollData(20,10);
}
else{
films = filmService.getScrollData(30,10);
}
}
};
button1.setOnClickListener(o);
button2.setOnClickListener(o);
button3.setOnClickListener(o);
button4.setOnClickListener(o);
show();
}
private void show() {
// TODO Auto-generated method stub
List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();
for(Film film : films){
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("title", film.getTitle());
item.put("score", film.getScore());
data.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"title","score"}, new int[]{R.id.title,R.id.score});
listView.setAdapter(adapter);
}
}
08-20 17:19:33.200: D/AndroidRuntime(938): Shutting down VM
08-20 17:19:33.200: W/dalvikvm(938): threadid=1: thread exiting with uncaught exception (group=0x40020560)
08-20 17:19:33.210: E/AndroidRuntime(938): FATAL EXCEPTION: main
08-20 17:19:33.210: E/AndroidRuntime(938): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.suishoukan/com.example.suishoukan.MainActivity}: java.lang.NullPointerException
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1834)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1850)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.access$1500(ActivityThread.java:125)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:941)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.os.Handler.dispatchMessage(Handler.java:99)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.os.Looper.loop(Looper.java:130)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.main(ActivityThread.java:3962)
08-20 17:19:33.210: E/AndroidRuntime(938): at java.lang.reflect.Method.invokeNative(Native Method)
08-20 17:19:33.210: E/AndroidRuntime(938): at java.lang.reflect.Method.invoke(Method.java:507)
08-20 17:19:33.210: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
08-20 17:19:33.210: E/AndroidRuntime(938): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
08-20 17:19:33.210: E/AndroidRuntime(938): at dalvik.system.NativeStart.main(Native Method)
08-20 17:19:33.210: E/AndroidRuntime(938): Caused by: java.lang.NullPointerException
08-20 17:19:33.210: E/AndroidRuntime(938): at com.example.suishoukan.MainActivity.show(MainActivity.java:85)
08-20 17:19:33.210: E/AndroidRuntime(938): at com.example.suishoukan.MainActivity.onCreate(MainActivity.java:54)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-20 17:19:33.210: E/AndroidRuntime(938): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1788)
08-20 17:19:33.210: E/AndroidRuntime(938): ... 11 morepackage com.example.suishoukan;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;import com.example.domain.Film;
import com.example.service.FilmService;
import com.example.test.FilmServiceTest;import android.app.TabActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;public class MainActivity extends TabActivity
{
//声明TabHost对象
TabHost mTabHost;
Button button1,button2,button3,button4;
FilmService filmService;
List<Film> films;
ListView listView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得TabHost对象
mTabHost = getTabHost();
/* 为TabHost添加标签 */
//新建一个newTabSpec(newTabSpec)
//设置其标签和图标(setIndicator)
//设置内容(setContent)
mTabHost.addTab(mTabHost.newTabSpec("tab_test1")
.setIndicator("榜单")
.setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2")
.setIndicator("节目表")
.setContent(R.id.textview2));
mTabHost.addTab(mTabHost.newTabSpec("tab_test3")
.setIndicator("收藏")
.setContent(R.id.textview3));
//设置当前显示哪一个标签
mTabHost.setCurrentTab(0);
filmService = new FilmService(this);
films = filmService.getScrollData(0,10);
listView = (ListView) this.findViewById(R.id.listView) ;
button1 = (Button) this.findViewById(R.id.button1);
button2 = (Button) this.findViewById(R.id.button2);
button3 = (Button) this.findViewById(R.id.button3);
button4 = (Button) this.findViewById(R.id.button4);
OnClickListener o = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(button1.getId()==v.getId()){
films = filmService.getScrollData(0,10);
}
else if(button2.getId()==v.getId()){
films = filmService.getScrollData(10,10);
}
else if(button3.getId()==v.getId()){
films = filmService.getScrollData(20,10);
}
else{
films = filmService.getScrollData(30,10);
}
}
};
button1.setOnClickListener(o);
button2.setOnClickListener(o);
button3.setOnClickListener(o);
button4.setOnClickListener(o);
show();
}
private void show() {
// TODO Auto-generated method stub
List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();
for(Film film : films){
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("title", film.getTitle());
item.put("score", film.getScore());
data.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"title","score"}, new int[]{R.id.title,R.id.score});
listView.setAdapter(adapter);
}
}
private void show() {
// TODO Auto-generated method stub
if(films != null)
{
List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();
for(Film film : films){
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("title", film.getTitle());
item.put("score", film.getScore());
data.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"title","score"}, new int[]{R.id.title,R.id.score});
listView.setAdapter(adapter);}
}
films = filmService.getScrollData(0,10);
public List<Film> getScrollData(int offset, int maxResult){
List<Film> films = new ArrayList<Film>();
SQLiteDatabase db = dbOpenHelper.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from film order by filmid asc limit ?,?",
new String[]{String.valueOf(offset), String.valueOf(maxResult)});
while(cursor.moveToNext()){
int filmid = cursor.getInt(cursor.getColumnIndex("filmid"));
float score = cursor.getFloat(cursor.getColumnIndex("score"));
String title = cursor.getString(cursor.getColumnIndex("title"));
films.add(new Film(filmid, title,score));
}
cursor.close();
return films;
}
while(cursor.moveToNext()){
前面加上
Log.i("test","记录数:" + cursor.getCount());
来检测查询结果将
button4.setOnClickListener(o);
后面的
show();
删除掉,然后把show();放到
else{
films = filmService.getScrollData(30,10);
}
代码的后面。
在show()里面的
listView.setAdapter(adapter);
后面加上一句
listView.setSelection(0);
在onClick里面的
else{
films = filmService.getScrollData(30,10);
}
代码的后面加上
show();
难道不能为多个按钮设置同一监听事件吗?一定得分开写?
package com.example.suishoukan;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;import com.example.domain.Film;
import com.example.service.FilmService;
import com.example.test.FilmServiceTest;import android.app.TabActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;public class MainActivity extends TabActivity
{
//声明TabHost对象
TabHost mTabHost;
Button button1,button2,button3,button4;
FilmService filmService;
List<Film> films;
ListView listView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得TabHost对象
mTabHost = getTabHost();
/* 为TabHost添加标签 */
//新建一个newTabSpec(newTabSpec)
//设置其标签和图标(setIndicator)
//设置内容(setContent)
mTabHost.addTab(mTabHost.newTabSpec("tab_test1")
.setIndicator("榜单")
.setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2")
.setIndicator("节目表")
.setContent(R.id.textview2));
mTabHost.addTab(mTabHost.newTabSpec("tab_test3")
.setIndicator("收藏")
.setContent(R.id.textview3));
//设置当前显示哪一个标签
mTabHost.setCurrentTab(0);
filmService = new FilmService(this);
//films = filmService.getScrollData(0,10);
listView = (ListView) this.findViewById(R.id.listView) ;
button1 = (Button) this.findViewById(R.id.button1);
button2 = (Button) this.findViewById(R.id.button2);
button3 = (Button) this.findViewById(R.id.button3);
button4 = (Button) this.findViewById(R.id.button4);
OnClickListener o = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(button1.getId()==v.getId()){
films = filmService.getScrollData(0,10);
}
else if(button2.getId()==v.getId()){
films = filmService.getScrollData(10,10);
}
else if(button3.getId()==v.getId()){
films = filmService.getScrollData(20,10);
}
else{
films = filmService.getScrollData(30,10);
}
show();
}
};
button1.setOnClickListener(o);
button2.setOnClickListener(o);
button3.setOnClickListener(o);
button4.setOnClickListener(o);
}
private void show() {
// TODO Auto-generated method stub
if(films!=null){
List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();
for(Film film : films){
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("title", film.getTitle());
item.put("score", film.getScore());
data.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"title","score"}, new int[]{R.id.title,R.id.score});
listView.setAdapter(adapter);
listView.setSelection(0);
}
}
}
每个button都要加setId
package com.example.suishoukan;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;import com.example.domain.Film;
import com.example.service.FilmService;
import com.example.test.FilmServiceTest;import android.app.TabActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;public class MainActivity extends TabActivity
{
//声明TabHost对象
TabHost mTabHost;
Button button1,button2,button3,button4;
FilmService filmService;
List<Film> films;
ListView listView;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//取得TabHost对象
mTabHost = getTabHost();
/* 为TabHost添加标签 */
//新建一个newTabSpec(newTabSpec)
//设置其标签和图标(setIndicator)
//设置内容(setContent)
mTabHost.addTab(mTabHost.newTabSpec("tab_test1")
.setIndicator("榜单")
.setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2")
.setIndicator("节目表")
.setContent(R.id.textview2));
mTabHost.addTab(mTabHost.newTabSpec("tab_test3")
.setIndicator("收藏")
.setContent(R.id.textview3));
//设置当前显示哪一个标签
mTabHost.setCurrentTab(0);
filmService = new FilmService(this);
//films = filmService.getScrollData(0,10);
listView = (ListView) this.findViewById(R.id.listView) ;
button1 = (Button) this.findViewById(R.id.button1);
button1.setId(1);
button2 = (Button) this.findViewById(R.id.button2);
button2.setId(2);
button3 = (Button) this.findViewById(R.id.button3);
button3.setId(3);
button4 = (Button) this.findViewById(R.id.button4);
button4.setId(4);
OnClickListener o = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(button1.getId()==v.getId()){
films = filmService.getScrollData(0,10);
}
else if(button2.getId()==v.getId()){
films = filmService.getScrollData(10,10);
}
else if(button3.getId()==v.getId()){
films = filmService.getScrollData(20,10);
}
else{
films = filmService.getScrollData(30,10);
}
show();
}
};
button1.setOnClickListener(o);
button2.setOnClickListener(o);
button3.setOnClickListener(o);
button4.setOnClickListener(o);
}
private void show() {
// TODO Auto-generated method stub
if(films!=null){
List<HashMap<String, Object>> data = new ArrayList<HashMap<String,Object>>();
for(Film film : films){
HashMap<String,Object> item = new HashMap<String,Object>();
item.put("title", film.getTitle());
item.put("score", film.getScore());
data.add(item);
}
SimpleAdapter adapter = new SimpleAdapter(this, data, R.layout.item,
new String[]{"title","score"}, new int[]{R.id.title,R.id.score});
listView.setAdapter(adapter);
listView.setSelection(0);
}
}
}
那个v.getId()是获取当前被点击的按钮的id值啊,你在前面为每个按钮setId()
films = filmService.getScrollData(30,10);
}
show();
}
此处有问题