2014-03-05 33 views
0

我寫這個代碼用於從DataBase中獲取數據並顯示在listView中。我想用3個textView和1個ImageView在我的自定義列表中顯示數據。我怎樣才能做到這一點?如何將simple_list_item_1更改爲自定義列表?

這是我的代碼:

private void Name() { 
     ListView tvName = (ListView) findViewById(R.id.lvListOfObject); 
     DataBase infoName = new DataBase(this); 
     infoName.open(); 
     ArrayList<String> dataName = infoName.getDataName(); 
     infoName.close(); 
     tvName.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, dataName)); 

,這是我的數據庫:

package com.kalagar.warehouse; 

import java.util.ArrayList; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DataBase { 

    private static final String LOGTAG = "WAREHOUSE"; 

    private static final String DATABASE_TABLE = "WareHouse"; 
    private static final int DATABASE_VERSION = 1; 
    private static final String DATABASE_NAME = "SellList"; 

    public static final String ROW_ID = "_id"; 
    public static final String ROW_NAME = "nameOfObject"; 
    public static final String ROW_KHARID = "ghBuy"; 
    public static final String ROW_FOROUSH = "ghSell"; 
    public static final String ROW_PICTURE = "picture"; 

    private static final String TABLE_CREATE = "CREATE TABLE " + DATABASE_TABLE 
      + " (" + ROW_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + ROW_NAME 
      + " TEXT, " + ROW_KHARID + " NUMERIC, " + ROW_FOROUSH 
      + " NUMERIC, " + ROW_PICTURE + " TEXT " + ")"; 

    private WareHouseDdbHelper ourHelper; 
    private final Context ourContext; 
    private SQLiteDatabase ourDatabase; 

    private static class WareHouseDdbHelper extends SQLiteOpenHelper { 

     public WareHouseDdbHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      db.execSQL(TABLE_CREATE); 
      Log.i(LOGTAG, "Table has been create"); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
      db.execSQL("DROP TABLE IF EXIST " + DATABASE_TABLE); 
      onCreate(db); 
     } 

    } 

    public DataBase(Context c) { 
     ourContext = c; 
    } 

    public DataBase open() throws SQLException { 
     ourHelper = new WareHouseDdbHelper(ourContext); 
     ourDatabase = ourHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() { 
     ourHelper.close(); 
    } 

    public long createEntry(String name, String kharid, String foroush) { 
     ContentValues cv = new ContentValues(); 
     cv.put(ROW_NAME, name); 
     cv.put(ROW_KHARID, kharid); 
     cv.put(ROW_FOROUSH, foroush); 
     return ourDatabase.insert(DATABASE_TABLE, null, cv); 

    } 

    public ArrayList<String> getDataName() { 
     String[] columns = new String[] { ROW_ID, ROW_NAME, ROW_KHARID, 
       ROW_FOROUSH }; 
     Cursor c = ourDatabase.query(DATABASE_TABLE, columns, null, null, null, 
       null, null); 
     ArrayList<String> result = new ArrayList<String>(); 

     int iRow = c.getColumnIndex(ROW_ID); 
     int iName = c.getColumnIndex(ROW_NAME); 
     int iKharid = c.getColumnIndex(ROW_KHARID); 
     int iForoush = c.getColumnIndex(ROW_FOROUSH); 

     for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { 
      result.add(c.getString(iRow) + " " + c.getString(iName) + " " 
        + c.getString(iKharid) + " " + c.getString(iForoush)); 
     } 

     return result; 
    } 
} 
+0

可以使用自定義的ListView適配器這個。 http://www.androidhive.info/2012/02/android-custom-listview-with-image-and-text/檢查這個鏈接 – anuruddhika

+0

查看我的回答在這[鏈接] [1]它肯定會幫助你 [1]:http://stackoverflow.com/questions/14953862/creating-listview-dynamically-in-android/14954033#14954033 –

+0

您需要使用自定義佈局並使用自定義適配器 – Raghunandan

回答

0

的,你需要一個自定義列表視圖首先,你應該在你的main.xml中添加ListView(只一個EG)文件,然後創建一個這樣

public class MySimpleArrayAdapter extends ArrayAdapter<String> { 
     private final Context context; 
     private final String[] values; 
     DataHelper dh; 

     public MySimpleArrayAdapter(Context context, int textViewResourceId, String[] values) { 
     super(context, textViewResourceId, values); 
     this.context = context; 
     this.values = values; 

     dh=new DataHelper(getApplicationContext()); 
     } 

     @Override 
     public View getView(final int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View rowView = inflater.inflate(R.layout.list_name, parent, false); 
     textView = (TextView) rowView.findViewById(R.id.textname); 

     textView.setText(values[position]); 
     // Change the icon for Windows and iPhone 
     textView.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) 
       { 
        Toast.makeText(this,""+values[position],10000).show(); 
       } 
       }); 


     return rowView; 
} 
} 

R.layout.list_name一類,這將是新的XML文件,其中無線會加載的內容列表視圖

和最後一步只需在您的創建方法做到這一點

con = (ListView) findViewById(R.id.main_listView); 
MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(MainActivity.this, R.id.main_listView ,data);// data is String array valu to be added in list view 
    //setting the adapter 
    con.setAdapter(adapter); 

來源link

0

遵循以下步驟:

  1. 創建列表視圖的列表項的XML。
  2. 爲將顯示爲列表項的數據創建一個POJO類。
  3. 使用該XML創建自定義適配器。使用BaseAdapter來創建自定義適配器。
  4. 假設您已創建名爲CustomAdapter.java的自定義適配器和名爲RowItem.javaPOJO類。現在,將這個適配器插入Listview如下...

    ListView tvName = (ListView) findViewById(R.id.lvListOfObject); 
    CustomAdapter adapter = new CustomAdapter(this, List<RowItem>()); 
    tvName.setAdapter(adapter); 
    

你可以按照這個教程...

Android: Custom ListView with Image and Text using BaseAdapter

ListView using BaseAdapter – Android

相關問題