我需要怎麼改變我下面的代碼,用我自己的XML列表視圖的幫助。該項目在我的光標「標籤」,「標題」,&「詳細描述」需要被膨脹成itemLabel,itemTitle中,XML的& itemDiscription。任何幫助將不勝感激:我知道如何從一個簡單的數組做到這一點。我爲從數據庫中獲取數據而創建的活動效果很好 - 我只是不知道如何使用/顯示具有multilines的自定義lisView。日Thnx!ListView控件和定製的ListView
修訂:我設法獲取數據使用自己的自定義XML文件,從數據庫中顯示。我現在的問題是每個TextView都返回三個列。即:從數據庫中的列'標題','標籤','描述'都作爲一個連續的線膨脹成一個單獨的TextView。我無法弄清楚如何將它分解成正確的TextView; title = R.id.listTitle,label = R.id.label,描述應該膨脹到R.id.caption中。幫幫我!
的ListView的活動:(修訂版):
public class List_AC extends ListActivity {
private ArrayList<String> results = new ArrayList<String>();
File dbfile = new File("/mnt/sdcard/XXX/XXX/dB/XXX.db");
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(dbfile, null);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
openAndQueryDatabase();
displayResultList();
}
private void displayResultList() {
AC_Adapter adapter = new AC_Adapter(getApplicationContext(),R.layout.list_item, results, results, results);
setListAdapter(adapter);
}
private void openAndQueryDatabase() {
try {
Cursor c = db.rawQuery("SELECT label, title, discription FROM AC_list", null);
if (c != null) {
if (c.moveToFirst()) {
do {
String i1 = c.getString(c.getColumnIndex("label"));
String i2 = c.getString(c.getColumnIndex("title"));
String i3 = c.getString(c.getColumnIndex("discription"));
results.add(i1 + i2 + i3);
} while (c.moveToNext());
}
}
} catch (SQLiteException se) {
Log.e(getClass().getSimpleName(),
"Could not create or Open the database");
} finally {
if (db != null)
db.close();
}
}
}
添加的適配器(AC_Adapter.java):
public class AC_Adapter extends ArrayAdapter<String> {
static List<String> Title = new ArrayList<String>();
static List<String> Label = new ArrayList<String>();
static List<String> Description = new ArrayList<String>();
Context myContext;
public AC_Adapter (Context context, int resource, List<String> aTitle, List<String> aLabel, List<String> aDescription){
super(context, resource, aTitle);
myContext = context;
Title= aTitle;
Label= aLabel;
Description = aDescription;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi = (LayoutInflater) myContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.list_item, null);
}
TextView tv_label = (TextView) v.findViewById(R.id.label);
TextView tv_title = (TextView) v.findViewById(R.id.listTitle);
TextView tv_decription = (TextView) v.findViewById(R.id.caption);
if (tv_label != null) {
tv_label.setText(Label.get(position));
}
if (tv_title != null) {
tv_title.setText(Title.get(position));
}
if (tv_decription != null) {
tv_decription.setText(Description.get(position));
}
return v;
}
}
這是需要的XML要創建(list_view.xml)在OnCreate:
<?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" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="30dip"
android:padding="4dip"
android:background="@drawable/gradient" >
<ImageButton
android:id="@+id/homeBtn"
android:src="@drawable/ic_menu_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:background="@null" />
<TextView
android:id="@+id/titleBarTitle"
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:textSize="18sp" />
<ImageButton
android:id="@+id/toolBtn"
android:src="@drawable/ic_menu_list"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentRight="true"
android:background="@null" />
</RelativeLayout>
<ListView
android:id="@+id/listItems"
android:layout_height="wrap_content"
android:layout_width="fill_parent" />
</LinearLayout>
和列表項(list_item.xml):
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/itemLabel"
style="@style/listAcronym" />
<TextView
android:id="@+id/itemTitle"
style="@style/listTitle" />
<TextView
android:id="@+id/itemDiscription"
style="@style/listDiscription"/>
<ImageView
style="@style/listNextIcon" />
我修改了上面的代碼-PLZ c REVISED在我的Q. Thx @chaitanya – CelticParser 2011-04-26 17:08:12
你可能想要傳遞Activity而不是使用getApplicationContext(),你可以幫我一個忙,只需將你的項目壓縮併發送給我一個鏈接,我可以修復它並在這裏發佈答案。此外,使用活動的LayoutInflater而不是上下文 – chaitanya 2011-04-26 18:27:22
Thx @chaitanya這裏是鏈接到zip。讓我知道你什麼時候有,所以我可以刪除這條評論。此外,我只發送了此活動的支持文件/結構。數據庫位於資產文件夾中,您必須手動將其放在仿真器SD卡下的「extStorageDirectory +」/xxx/xxx/dB/flyDroid.db「我必須從項目中省略儘可能多的數據,一些虛假的信息進入數據庫(這是一個政府項目)抱歉。提前感謝您的幫助 - 我有很多東西要學習...... – CelticParser 2011-04-26 19:41:02