SQLite - 在单击ListView时显示特定数据

时间:2017-03-17 17:56:07

标签: android sqlite listview

我的应用中有标签式活动。在里面我有2个片段/标签。第一个是 Cours ,第二个是注释

我正在使用sqlite在右表中添加所有内容。

我有一个表 Cours 和一个表注释。在备注中,我有一个FK,它是表格 Cours 的ID。

在第一个标签中,我有一个已经填充的listView。在第二个选项卡中,我填充了另一个ListView。

ListView来自一个表。我能够获取我在第一个ListView上单击的项目的ID,并将其作为FK插入该表中。

这就是:如果我点击第一个ListView的Item1,我只想显示我添加的注释,其中FK等于我在第一个ListView中点击的项目的ID。如果我点击第一个listView的Item2。基本上,我想填充我的第二个listView,具体取决于我在第一个listView上单击的项目。

但是,相反,我的listView不再显示,我不知道为什么。

这是我的代码:

SharedPreferences获取ID

   final SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
   long cours = sharedPref.getLong("IdCours",0);
   int id_cours = (int)cours;

getAllNotes的方法(在DatabaseHelper上创建)

public List<NotesTextuelles> getAllNotesTextuelles(int idcours) {

    List<NotesTextuelles> NotesTListe = new ArrayList<>();
    String query = "SELECT * FROM "+TABLE_NOTES+" WHERE "+COLONNE_FKCOURS+"="+idcours+"";
     Open();
     Cursor cursor = db.rawQuery(query,null);

    if (cursor.moveToFirst()) {
        do {
            NotesTextuelles notes = new NotesTextuelles();
            notes.setId(Integer.parseInt(cursor.getString(0)));
            notes.setDescription(cursor.getString(1));
            notes.setTitre(cursor.getString(2));
            NotesTListe.add(notes);

        } while (cursor.moveToNext());
    }
    return NotesTListe;
}

我在OngletNotes.java中填充ListView的位置

  final ListView listViewNotes = (ListView) rootView.findViewById(R.id.ListNotes);

    DatabaseHelper dbhelper = new DatabaseHelper(getContext());

    List<NotesTextuelles> listeNotesTextuelles;
    final ArrayList<String> arrayList;

    listeNotesTextuelles = dbhelper.getAllNotesTextuelles(id_cours);

    if (!listeNotesTextuelles.isEmpty())
    {
        String item;
        String[] notes = {""};
        arrayList = new ArrayList<>(Arrays.asList(notes));
        final ArrayAdapter adapter = new ArrayAdapter<String>
                (getContext(), android.R.layout.simple_list_item_1, arrayList);

        listViewNotes.setAdapter(adapter);

        for (int i = 0; i < listeNotesTextuelles.size(); i++)
        {
            item = listeNotesTextuelles.get(i).getTitre();
            arrayList.add(item);
            adapter.notifyDataSetChanged();

            Collections.sort(arrayList, String.CASE_INSENSITIVE_ORDER);
        }

    }

OnItemClickListener

      listViewCours.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            SharedPreferences prefs_id = PreferenceManager.getDefaultSharedPreferences(getActivity());

            SharedPreferences.Editor editor_id = prefs_id.edit();
            long itemid= listViewCours.getItemIdAtPosition(i);
            String a = String.valueOf(itemid);
             //toast to check if ID is good
            Toast ok = Toast.makeText(getContext(), a, Toast.LENGTH_SHORT);
             ok.show();

            editor_id.putLong("IdCours",itemid);
            editor_id.commit();
            ((Onglets)getActivity()).goToFragment(1);
        }

    });

0 个答案:

没有答案