2010-10-29 50 views
0

我正在使用下面的代碼創建一個帶有文本和圖標的ListView,但問題出在哪裏,下面我希望數組是動態的而不是靜態的我的列表動態創建而不是統計。我的最終目標是從我的Db中檢索特定的字符串,然後在列表視圖中顯示它,每列中的每個字符串都將顯示在其中。 非常感謝您提前。創建ListView圖標和文本時動態數組而不是靜態Android

我的源代碼:

import java.util.ArrayList; 
    import android.app.Activity; 
    import android.app.ListActivity; 
    import android.database.Cursor; 
    import android.database.sqlite.SQLiteDatabase; 
    import android.os.Bundle; 
    import android.view.LayoutInflater; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.AdapterView; 
    import android.widget.AdapterView.OnItemClickListener; 
    import android.widget.ArrayAdapter; 
    import android.widget.ImageView; 
    import android.widget.ListView; 
    import android.widget.TextView; 
    import android.widget.Toast; 

    public class History extends ListActivity implements OnItemClickListener { 

String keyWord = ""; 
String histDesRes = ""; 
String history = ""; 
String rawImage; 
ArrayList<String> Ra = new ArrayList<String>(); 
SQLiteDatabase mydb; 
TextView selection; 
public String[] result={keyWord, "ipsum", "dolor", 
     "sit", "amet", 
     "consectetuer", "adipiscing", "elit", "morbi", "vel", 
     "ligula", "vitae", "arcu", "aliquet", "mollis", 
     "etiam", "vel", "erat", "placerat", "ante", 
     "porttitor", "sodales", "pellentesque", "augue", "purus"}; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.history); 
    populate(); 




} 


@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    //populate(); 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    //populate(); 
} 

@Override 
protected void onStart() { 
    // TODO Auto-generated method stub 
    super.onStart(); 
    //populate(); 
} 

void populate() { 

    mydb = openOrCreateDatabase("vivo_id.db", 
      SQLiteDatabase.CREATE_IF_NECESSARY, null); 
    Cursor c = mydb.query("VIVOID", null, null, null, null, null, null); 
    // start the managing cursor 
    startManagingCursor(c); 
    // move to first row 
    c.moveToFirst(); 
    // continue searching until it is the last row in the column 
    while (c.isAfterLast() == false) { 

     rawImage = c.getString(c.getColumnIndex("couponThumbnailResult")); 
     keyWord = c.getString(c.getColumnIndex("keyWordResult")); 
     histDesRes = c.getString(c.getColumnIndex("historyDescriptionResult")); 
     //Toast.makeText(getApplicationContext(), 
       //history, Toast.LENGTH_LONG).show(); 
     history = keyWord+" "+ histDesRes; 
     c.moveToNext(); 
     } 

    // close everything 
    c.close(); 
    mydb.close(); 
    setListAdapter(new IconicAdapter()); 
    selection=(TextView)findViewById(R.id.selection); 

} 

public void onListItemClick(ListView parent, View v, int position, long id) { 
    Toast.makeText(getApplicationContext(), 
      "Inside listen", Toast.LENGTH_LONG).show(); 

} 

class IconicAdapter extends ArrayAdapter { 
    IconicAdapter() { 
     super(History.this, R.layout.row, result); 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     LayoutInflater inflater = getLayoutInflater(); 
     View row = inflater.inflate(R.layout.row, parent, false); 
     TextView label = (TextView) row.findViewById(R.id.label); 
     label.setText(result[position]); 

     ImageView icon = (ImageView) row.findViewById(R.id.icon); 


      icon.setImageResource(R.drawable.ok); 

     return (row); 
    } 
} 

@Override 
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
    // TODO Auto-generated method stub 

} 

    } 

    /** 
    * On Item click event for the list view 
    */ 

回答

0
while (c.isAfterLast() == false) { 
     rawImage = c.getString(c.getColumnIndex("couponThumbnailResult")); 
     keyWord = c.getString(c.getColumnIndex("keyWordResult")); 
     histDesRes = c.getString(c.getColumnIndex("historyDescriptionResult")); 
     //Toast.makeText(getApplicationContext(), 
     //history, Toast.LENGTH_LONG).show(); 
     history = keyWord+" "+ histDesRes; 
     //Use an ArrayList to store your results from the DB 
     c.moveToNext(); 
    } 

String[] results = yourArrayList.toArray(); 

使用此數組中的適配器....

+0

嗨Umesh製作, 首先我只是想感謝您抽出寶貴的時間來回答但不幸的是,這個解決方案並不適合我,如果你可以請給出一個更明確的解釋,也許發佈一些相信與否這是一個生死攸關的問題,這對我的應用非常重要,非常感謝你。 – 2010-10-29 16:40:04

+0

你有沒有遇到錯誤?在這種情況下,你可以發佈日誌。 – Umesh 2010-10-30 08:43:45