[英]Android OnclickItem listview more detailed info in another activity from SQLite database
我想從數據庫請求數據。 在列表中,我只想顯示標題,如果單擊它,我想顯示更多詳細信息。 我將如何獲取ListItem的位置並顯示屬於該列表項的數據? 這是我的代碼:
FragmentRonde1.java
public class FragmentRonde1 extends android.support.v4.app.Fragment {
public ListView lv1;
public TextView tv1, tv2;
MyDbHandler db;
SimpleCursorAdapter dataAdapter;
public FragmentRonde1() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View rootview = inflater.inflate(R.layout.fragment_ronde1, container, false);
((MainActivity) getActivity()).setTitle("Workshops Ronde 1");
db = new MyDbHandler(getActivity());
db.InsertValues();
final Cursor cursor=db.GetAllData();
String from [] = new String[]{db.COLUMN_TITLE};
int to [] = new int[] {R.id.workshopTitle1};
dataAdapter = new SimpleCursorAdapter(getActivity(),R.layout.row_layout_workshop, cursor, from, to, 0);
lv1 = (ListView)rootview.findViewById(R.id.Ronde1lv);
lv1.setAdapter(dataAdapter);
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent listClicked = new Intent(getActivity(), ListClicked.class);
startActivity(listClicked);
tv1 = (TextView)rootview.findViewById(R.id.listClickedTitle);
tv2 = (TextView)rootview.findViewById(R.id.listClickedDescription);
}
});
return rootview;
}
}
MyDbHandler.java
public class MyDbHandler extends SQLiteOpenHelper {
private static int DATABASE_VERSION = 6;
private static String DATABASE_NAME = "workshopDB";
private static String TABLE_WORKSHOPS = "workshops";
public static String COLUMN_ID = "_id";
public static String COLUMN_TITLE= "title";
public static String COLUMN_BESCHRIJVING = "beschrijving";
public static final String COLUMN_MGT = "mgt";
public static final String COLUMN_DOC = "doc";
public static final String COLUMN_OOP = "oop";
public static final String COLUMN_BEGELEIDER = "begeleider";
public static final String COLUMN_DEELNEMERS = "deelnemers";
public static final String COLUMN_RONDE1 = "ronde1";
public static final String COLUMN_RONDE2 = "ronde2";
public static final String COLUMN_RONDE3 = "ronde3";
public static final String COLUMN_LOKAAL1 = "lokaal1";
public static final String COLUMN_LOKAAL2 = "lokaal2";
public static final String COLUMN_LOKAAL3 = "lokaal3";
public MyDbHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE IF NOT EXISTS workshops(_id INT, title VARCHAR, beschrijving VARCHAR);");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE workshops;");
db.execSQL("CREATE TABLE IF NOT EXISTS workshops(_id INT, title VARCHAR, beschrijving VARCHAR);");
}
public void InsertValues()
{
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.execSQL("INSERT INTO workshops VALUES(1, 'Title Would be Here', 'Here would be the description');");
db.close();
}
public Cursor GetAllData()
{
SQLiteDatabase db = this.getReadableDatabase();
Cursor c = db.rawQuery("SELECT * FROM workshops;", null);
return c;
}
}
我真的希望有人可以幫我解決這個問題,因為我對此並不陌生,所以我不知道該怎么做。
您收到項目位置作為position
參數
lv1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent listClicked = new Intent(getActivity(), ListClicked.class);
startActivity(listClicked);
tv1 = (TextView)rootview.findViewById(R.id.listClickedTitle);
tv2 = (TextView)rootview.findViewById(R.id.listClickedDescription);
//This is the position of the item clicked
int pos = position;
//You also can have the item ID
long itemID = id;
}
});
然后,您可以從光標位置獲得項目X的所有數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.