Конфигурация ListView и ArrayAdapter, приложение для Android - PullRequest
0 голосов
/ 02 декабря 2011

ПОСЛЕ Много часов работы над тем, чтобы заставить ListView работать с моей БД, мне наконец-то удалось его скомпилировать. Теперь, когда я знаю, что все передается должным образом (например, информация о базе данных в виде списка), мне стало интересно, может ли кто-нибудь предложить способы сделать его более полезным. Я заметил, что когда я запускаю приложение, элементы списка выглядят кликабельными, но ни к чему не приводят. как я могу добавить в свой код, чтобы при нажатии на элемент открывалась новая операция со всей информацией об элементах?

private void showEvents() {
    SQLiteDatabase db = post.getWritableDatabase();
    Cursor cursor= db.rawQuery("SELECT "+TITLE+", "+LINK+", "+POST+", "+DATE+" FROM "+TABLE_NAME+" "+"ORDER BY "+DATE+" DESC;",null);
    startManagingCursor(cursor);

    //TextView tv = new TextView(this);
    //ListView lv1 = (ListView) findViewById(R.id.myListView);
    ListView lv1 = new ListView(this);
    lv1.setId(2000);


    // Stuff them all into a big string
    StringBuilder builder = new StringBuilder("");
    ArrayList<String> codes = new ArrayList<String>();
     while(cursor.moveToNext()){
         String title = cursor.getString(0);
         //builder.append("Title:  ").append(title).append("\n");

         String link = cursor.getString(1);
         //builder.append("Link:  ").append(link).append("\n");

         String post = cursor.getString(2);
         //builder.append("Post:  ").append(post).append("\n");

         String date = cursor.getString(3);
         //builder.append("Date:  ").append(date).append("\n");
         codes.add(title);

     }
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, codes);
     lv1.setAdapter(adapter);
     this.setContentView(lv1);

     //tv.setText(builder);
     //this.setContentView(tv);
 }

Например, когда я добавляю codes.add (заголовок), я хочу щелкнуть этот элемент и просмотреть остальные поля этого содержимого (например, ссылку, описание, дату). Большинство обучающих программ не имеют дело с этой настройкой массива, так что трудно понять, что делать.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Вам необходимо добавить прослушиватель щелчков к представлению списка, а затем получить способ выяснить, что было нажато, и начать новое действие.Примерно так:

lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
    int position, long id) {
        String textOfSelectedItem  =((TextView) view).getText().toString();     
         //Create our intent             
        Intent i = new Intent(getApplicationContext(), NewActivity.class);                              
        i.putExtra("Place", textOfSelectedItem);
        startActivity(i);
      }
}

});

0 голосов
/ 02 декабря 2011

Приведенный выше код сбивает с толку, вы должны написать собственный адаптер, который расширяет CursorAdapter.

Вы можете проверить пример приложения NotePad на веб-сайте android dev.

...