2010-11-25 20 views
1

私は、リストビューを使用してデータベースからコースを作成するAndroidアプリを持っています。私が欲しいのは、ListViewのデータベースからCourseIDを入れることです。また、OnItemClickListenerを使用してこのIDを解析して、コースの詳細を示す新しいインテントにしたいとします。私は、データベースからコースIDを入れたいputExtra()メソッドで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); 
     } 

    }); 
} 
} 

代わりの「位置」パラメータ:

私のコードは次のようになります。それ、どうやったら出来るの?

答えて

0

データベースからデータを入力する場合は、CursorAdapterを使用することをお勧めします。 Cursorのインスタンスが新しいビューと同様にバインドビューに渡されます。

bindView(ビュービュー、コンテキストコンテキスト、カーソルcursor)

newView(コンテキストコンテキスト、カーソルcursor、のViewGroupの親)

現在のケースの場合は、カスタム・アダプタを取得するにはArrayAdapterを拡張してみてください。 タグをCourse ID値として設定し、次にview.getTag()を使用して、リスト項目クリックに関するCourseIdを取得できます。

+0

khotmanish、あなたの答えに感謝します。私はこれに非常に新しいです - あなたは事例を持っていますか?私は今何時間もグーグルで遊んでいた: - / – Jonas

関連する問題