您好,登錄后才能下訂單哦!
這篇文章主要介紹了android中如何實現listview,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
目錄結構:
MainActivity2
package com.example1.listviewpracticvce; /* * 本activity實現的功能: * 將數據庫中的數據用listview顯示出來 */ import com.example1.listviewdao.PersonDAO; import android.app.Activity; import android.content.Context; import android.database.Cursor; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ImageView; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.OnItemClickListener; import android.widget.SimpleCursorAdapter.ViewBinder; public class MainActivity2 extends Activity { ListView lvPerson; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.person); PersonDAO personDAO = new PersonDAO(this); Cursor cursor = personDAO.getPersons(); //cursor類似一個指針 lvPerson = (ListView) findViewById(R.id.lvPerson); //SimpleCursorAdapter(context, layout, c, from, to ) // listview的布局 cursor 需要顯示的列 在哪個控件中顯示 //數組開頭的列必須是"_id" SimpleCursorAdapter adapter = new PersonAdapter(this, R.layout.person_item, cursor, new String[]{ "_id", "pname", "pgender" }, new int[]{ R.id.tvPid, R.id.tvPname, R.id.ivPgender }); // SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.person_item, cursor, // new String[]{ "_id", "pname", "pgender" }, //要顯示的列 // new int[]{ R.id.tvPid, R.id.tvPname, R.id.ivPgender });//顯示每行所用控件 //為了將性別顯示為圖片,這里復寫了SimpleCursorAdapter這個類 lvPerson.setAdapter(adapter); lvPerson.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Cursor cursor = (Cursor) parent.getItemAtPosition(position); Toast.makeText(getApplicationContext(), cursor.getString(1), Toast.LENGTH_sHORT).show(); } } ); } } //利用源代碼定制 class PersonAdapter extends SimpleCursorAdapter { private Cursor mCursor; protected int[] mFrom; protected int[] mTo; private ViewBinder mViewBinder; public PersonAdapter(Context context, int layout, Cursor c, String[] from, int[] to) { super(context, layout, c, from, to); mCursor = c; mTo = to; findColumns(from); } @Override public void bindView(View view, Context context, Cursor cursor) { final ViewBinder binder = mViewBinder; final int count = mTo.length; final int[] from = mFrom; final int[] to = mTo; for (int i = 0; i < count; i++) { final View v = view.findViewById(to[i]); if (v != null) { Boolean bound = false; if (binder != null) { bound = binder.setViewValue(v, cursor, from[i]); } if (!bound) { String text = cursor.getString(from[i]); if (text == null) { text = ""; } if (v instanceof TextView) { setViewText((TextView) v, text); } else if (v instanceof ImageView) { if (text.equals("男")) { setViewImage((ImageView) v, String.valueOf(R.drawable.boy)); } else { setViewImage((ImageView) v, String.valueOf(R.drawable.girl)); } } else { throw new IllegalStateException(v.getClass().getName() + " is not a " + " view that can be bounds by this SimpleCursorAdapter"); } } } } } private void findColumns(String[] from) { if (mCursor != null) { int i; int count = from.length; if (mFrom == null || mFrom.length != count) { mFrom = new int[count]; } for (i = 0; i < count; i++) { mFrom[i] = mCursor.getColumnIndexOrThrow(from[i]); } } else { mFrom = null; } } }
DBOpenHelper
package com.example1.listviewdao; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { private static final int VERSION = 1; private static final String DBNAME = "data.db"; private static final String PERSON="t_person"; public DBOpenHelper(Context context) { super(context, DBNAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table "+PERSON+" (_id varchar(4) primary key,pname varchar(20),pgender varchar(2))"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1001','張三','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1002','李四','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1003','王五','女')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1004','趙錢','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1005','孫李','女')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1006','周吳','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1007','鄭王','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1008','馮陳','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1009','褚衛','女')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1010','蔣沈','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1011','韓楊','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1012','朱秦','男')"); db.execSQL("insert into t_person (_id, pname, pgender) values ('1013','尤許','男')"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }
Person
package com.example1.listviewdao; public class Person { private String pid; private String pname; private String pgender; public Person() { super(); } public Person(String pid, String pname, String pgender) { super(); this.pid = pid; this.pname = pname; this.pgender = pgender; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } public String getPgender() { return pgender; } public void setPgender(String pgender) { this.pgender = pgender; } @Override public String toString() { return "pid=" + pid + ";pname=" + pname + ";pgender=" + pgender; } }
PersonDAO
package com.example1.listviewdao; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class PersonDAO { private DBOpenHelper helper; private SQLiteDatabase db; public PersonDAO(Context context) { helper = new DBOpenHelper(context); } public Cursor getPersons(int start, int count) { db = helper.getWritableDatabase(); Cursor cursor=db.query("t_person", new String[]{"_id","pname","pgender"}, null, null, null, null, "_id desc",start+","+count); return cursor; } public Cursor getPersons() { db = helper.getWritableDatabase(); Cursor cursor=db.query("t_person", new String[]{"_id,pname,pgender"}, null, null, null, null, null); return cursor; } public long getCount() { db = helper.getWritableDatabase(); Cursor cursor = db.rawQuery("select count(_id) from t_person", null); if (cursor.moveToNext()) { return cursor.getlong(0); } return 0; } }
person_item.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/tvPid" android:layout_width="70dp" android:layout_height="50dp" android:gravity="center" android:textSize="15sp" /> <TextView android:id="@+id/tvPname" android:layout_width="190dp" android:layout_height="50dp" android:gravity="center" android:textSize="15sp" /> <ImageView android:id="@+id/ivPgender" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- <TextView android:id="@+id/ivPgender" android:layout_width="wrap_content" android:layout_height="50dp" android:gravity="center" android:textSize="15sp" /> --> </LinearLayout>
person.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <TextView android:layout_width="70dp" android:layout_height="wrap_content" android:gravity="center" android:text="編號" android:textSize="20sp" android:textStyle="bold" /> <TextView android:layout_width="190dp" android:layout_height="wrap_content" android:gravity="center" android:text="姓名" android:textSize="20sp" android:textStyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="性別" android:textSize="20sp" android:textStyle="bold" /> </LinearLayout> <ListView android:id="@+id/lvPerson" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg" android:scrollingCache="false" android:divider="@drawable/line" /> </LinearLayout>
結果展示
感謝你能夠認真閱讀完這篇文章,希望小編分享的“android中如何實現listview”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。