剛開始學習Android,先做了一個APP,各項運行都正常,后來從別處硬搬了一個輪播圖,listview串列頁面就崩潰了
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
public class LookActivity extends Activity {
private Button myHomeBtn, myselfBtn;
private ListView result;
private TextView userName, mood;
private String userId, name, headName;
private ImageView head;
MyDatabaseHelper mydbHelper;
private ViewPager mMyViewPaper;
private List<ImageView> images;
private List<View> dots;
private int currentItem;
private MyAdapter adapter;
//當前顯示圖片的位置
private int localPosition = 0;
//圖片的id
private int[] imageIds =
new int[]{R.drawable.dot_0, R.drawable.dot_1, R.drawable.dot_2, R.drawable.dot_3, R.drawable.dot_4};
//圖片的標題
private TimerTask mTimerTask;
//創建一個定時器
private final Timer timer = new Timer();
private ImageView mImageView;
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
CloseActivityClass.activityList.add(this);
setContentView(R.layout.activity_look);
myHomeBtn = (Button) findViewById(R.id.homeBtn);
myselfBtn = (Button) findViewById(R.id.myselfBtn);
result = (ListView) findViewById(R.id.result);
// 獲取傳遞資訊
Intent intent = getIntent();
userId = intent.getStringExtra("userId");
myHomeBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(LookActivity.this,
HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("userId", userId);
intent.putExtra("sign", "0");
intent.putExtra("isBackLook", "yes");
startActivity(intent);
System.exit(0);
}
});
myselfBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(LookActivity.this,
MyselfActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("userId", userId);
intent.putExtra("sign", "0");
intent.putExtra("isBackLook", "yes");
startActivity(intent);
System.exit(0);
}
});
mMyViewPaper = (ViewPager) findViewById(R.id.vp);
//顯示的圖片
images = new ArrayList<>();
for (int i = 0; i < imageIds.length; i++) {
mImageView = new ImageView(this);
mImageView.setBackgroundResource(imageIds[i]);
images.add(mImageView);
}
dots = new ArrayList<>();
dots.add(findViewById(R.id.dot_0));
dots.add(findViewById(R.id.dot_1));
dots.add(findViewById(R.id.dot_2));
dots.add(findViewById(R.id.dot_3));
dots.add(findViewById(R.id.dot_4));
adapter = new MyAdapter(LookActivity.this, images);
mMyViewPaper.setAdapter(adapter);
mMyViewPaper.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
position = position % images.size();
dots.get(position).setBackgroundResource(R.drawable.dot_0);
dots.get(localPosition).setBackgroundResource(R.drawable.dot_1);
localPosition = position;
currentItem = position;
}
/**
* 頁面滑動時回呼
*/
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
/**
* 當ViewPager狀態改變時,回呼
*/
@Override
public void onPageScrollStateChanged(int state) {
}
});
mydbHelper = new MyDatabaseHelper(LookActivity.this, "topic.db", null,
1);// 創建資料庫輔助類
SQLiteDatabase db = mydbHelper.getReadableDatabase();// 獲取SQLite資料庫
// 配置配接器顯示話題串列
SimpleAdapter adapter = new ImageSimpleAdapter(this, getData(db),
R.layout.listview_look, new String[] { "date", "body",
"userName", "user_id", "imageHead", "commNumber" },
new int[] { R.id.look_date, R.id.topic_content, R.id.Qname,
R.id.userId, R.id.head, R.id.commentTv });
result.setAdapter(adapter);
result.setOnItemClickListener(new ItemClickEvent());
}
protected void onStart() {
super.onStart();
mTimerTask = new TimerTask() {
@Override
public void run() {
currentItem = (currentItem + 1) % imageIds.length;
mHandler.sendEmptyMessage(0);
}
};
timer.schedule(mTimerTask, 4000, 4000);
}
/**
* 接收子執行緒傳遞的資料
*/
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
//輪播到最后一張圖片時,直接跳轉至第一頁,并且取消滑動效果
if (currentItem % images.size() == 0) {
mMyViewPaper.setCurrentItem(currentItem, false);
}
//非最后一張展示圖片的滑動效果
mMyViewPaper.setCurrentItem(currentItem, true);
}
};
@Override
protected void onStop() {
super.onStop();
timer.cancel();
}
// 點擊進入該話題評論界面
public class ItemClickEvent implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
HashMap<String, String> map = (HashMap<String, String>) result
.getItemAtPosition(arg2);
Intent intent = new Intent(LookActivity.this,
CommentsActivity.class);
intent.putExtra("userId", userId);
intent.putExtra("sign", "backLook");
intent.putExtra("user_id", map.get("user_id"));
intent.putExtra("userName", map.get("userName"));
intent.putExtra("userComments", userName.getText());
intent.putExtra("body", map.get("body"));
intent.putExtra("date", map.get("date"));
mydbHelper = new MyDatabaseHelper(LookActivity.this, "user.db",
null, 1);// 創建資料庫輔助類
SQLiteDatabase db2 = mydbHelper.getReadableDatabase();// 獲取SQLite資料庫
setNameAndHead(db2, map.get("user_id"));
intent.putExtra("headName", headName);
startActivity(intent);
}
}
private List<Map<String, Object>> getData(SQLiteDatabase db) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
Cursor cur = db.query("topic_tb", new String[] { "date", "body",
"user_id", "commNumber" }, null, null, null, null, "_id desc");
mydbHelper = new MyDatabaseHelper(LookActivity.this, "user.db", null, 1);// 創建資料庫輔助類
SQLiteDatabase db2 = mydbHelper.getReadableDatabase();// 獲取SQLite資料庫
while (cur.moveToNext()) {
for (int i = 0; i < cur.getCount(); i++) {
cur.moveToPosition(i);
String date = cur.getString(0);
String body = cur.getString(1);
String user_id = cur.getString(2);
String commNumber = cur.getString(3) + " 人評論";
map = new HashMap<String, Object>();
map.put("date", date);
map.put("body", body);
this.setNameAndHead(db2, user_id);
map.put("userName", name);
map.put("user_id", user_id);
map.put("commNumber", commNumber);
String path = "/sdcard/head/" + headName + ".jpg";
Bitmap bm = BitmapFactory.decodeFile(path);
map.put("imageHead", bm);
list.add(map);
}
}
return list;
}
public void setNameAndHead(SQLiteDatabase db, String userId) {
Cursor cur = db.query("user_tb", new String[] { "userName", "head" },
"userId='" + userId + "'", null, null, null, null);
while (cur.moveToNext()) {
for (int i = 0; i < cur.getCount(); i++) {
cur.moveToPosition(i);
this.name = cur.getString(0);
this.headName = cur.getString(1);
}
}
}
private void showTips() {
AlertDialog alertDialog = new AlertDialog.Builder(this).setTitle("提醒")
.setMessage("是否退出程式")
.setPositiveButton("確定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
android.os.Process.killProcess(android.os.Process
.myPid());
}
}).setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
return;
}
}).create(); // 創建對話框
alertDialog.show(); // 顯示對話框
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
showTips();
return false;
}
return super.onKeyDown(keyCode, event);
}
protected void onDestroy() {
if (mydbHelper != null) {
mydbHelper.close();
}
}
}
uj5u.com熱心網友回復:
日志!日志!日志!https://blog.csdn.net/weimingjue/article/details/87921494
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/131603.html
標籤:Android
上一篇:Android中使用LitePal,一個表中資料可以正常save,另一個表姐夫怎么也插入不成功,有沒有朋友遇到過這個問題啊!
下一篇:android studio
