2010-11-25 42 views
1

我有一个Android应用程序,它使用ListView来填充数据库中的课程。我想要的是将数据库中的CourseID放在ListView中。我还想使用OnItemClickListener将此ID解析为显示课程详细信息的新意图。Android中的ListView中的数据库中设置和检索ID

我的代码如下所示:

import java.io.IOException; 
import java.util.ArrayList; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.text.InputFilter.LengthFilter; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.Toast; 
import android.widget.AdapterView.OnItemClickListener; 


public class Menu extends Activity { 
/** Called when the activity is first created. */ 

private ListView lv1; 
private String lv_arr[]={"BSc Business Information Technology","BSc Computer Forensics","BSc Computer Science","BSc Computing","BSc Internet Computing","BSc IT Security","BSc Mobile Computing","BSc Software Engineering"}; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    lv1 = (ListView)findViewById(R.id.ListView01); 

    DataBaseHelper myDbHelper; 
    myDbHelper = new DataBaseHelper(this); 

    try 
    { 
     myDbHelper.createDataBase(); 
    } 
    catch (IOException ioe) 
    { 

     throw new Error("Unable to create database"); 
    } 

    try 
    { 
     myDbHelper.openDataBase(); 

     SQLiteDatabase db = myDbHelper.getReadableDatabase(); 

     Cursor cursor = db.query("Courses", new String[]{"coursename"}, null, null, null, null, "coursename"); 
     startManagingCursor(cursor); 

     if (cursor.getCount() > 0) 
     { 
      if (cursor.moveToFirst()) 
      { 
       ArrayList strings = new ArrayList(); 
       do 
       {      
        String mC = cursor.getString(0); 
        strings.add(mC); 
       } 
       while (cursor.moveToNext()); 

       lv_arr = (String[]) strings.toArray(new String[strings.size()]); 
      } 
     } 
     else 
     { 
      Toast.makeText(this, "No courses in database", Toast.LENGTH_SHORT).show(); 
     } 

     cursor.close(); 

     // By using setAdpater method in listview we an add string array in list. 
     lv1.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, lv_arr));  

    } 
    catch(SQLException sqle) 
    { 
     throw sqle; 
    } 

    lv1.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> a, View view, int position, long id) 
     { 
      Intent detailsIntent = new Intent(view.getContext(), CourseDetails.class); 
      detailsIntent.putExtra("CourseID", position); 
      //Cursor c = (Cursor) cursorAdapter.getItem(position); 
      startActivity(detailsIntent); 
     } 

    }); 
} 
} 

而不是在我想从数据库中把课程ID的putExtra()方法中的“位置”参数。我怎么做?

回答

0

如果您正在填充数据库中的数据,那么我建议您使用CursorAdapter。 Cursor的一个实例被传递给绑定视图以及新视图。

bindView(查看视图,上下文的背景下,光标光标)

NewView的(上下文的背景下,光标光标,一个ViewGroup父)

对于目前的情况下,尝试延长ArrayAdapter获得自定义适配器。 将标记设置为课程标识值,然后通过view.getTag()将与标签项目单击相关的CourseId设置为可选。

+0

khotmanish,谢谢你的回答。我对此很新 - 你碰巧有一个例子吗?我现在一直在Google上搜索几个小时: - / – Jonas 2010-11-26 02:41:37

相关问题