Clicklist элемент ListView нуждается в функции SQL новый элемент, как? - PullRequest
0 голосов
/ 25 февраля 2012

Я создал SQLiteDatabase, где я могу видеть элементы с помощью кнопки «Просмотр» и, нажав на нее, я получаю всю базу данных в ListView. В этом ListView я бы хотел, чтобы элементы были кликабельными, и если я щелкаю по ним, я хочу добавить новую запись с тем же именем, но с другим идентификатором. Мой код пока:

ListView lv;
ArrayList<String> todoItems = new ArrayList<String>();


    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);


        setListAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, todoItems));
          ListView lv = getListView();
          lv.setTextFilterEnabled(true);

        hornot info = new hornot(this);
        info.open();

        Cursor c = info.getAllTitles();
        if (c.moveToFirst())
        {
        do{


            todoItems.add(c.getString(0) + " " + c.getString(1) + " " + c.getString(2));
            }while (c.moveToNext());
        }
            if (todoItems.size() > 0)
            {
        lv.setAdapter(new ArrayAdapter<String>(sqview.this,android.R.layout.simple_list_item_1, todoItems));
            }


            lv.setOnItemClickListener(new OnItemClickListener(){
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {

                      //-/////////////////////////
                    }
                  });

            info.close(); 

        }

Как видите, я помещаю элементы базы данных в массив, а затем помещаю их в ListView. С помощью кнопки апгрейда я могу добавлять предметы, поэтому я думаю, что мне нужно сделать то же самое здесь. В функции dbhelper createEntry:

public long createEntry(String name, String hotness) {
        ContentValues cv = new ContentValues();
        cv.put(KEY_NAME, name);
        cv.put(KEY_HOTNESS, hotness);
        return ourDatabase.insert(DATABASE_TABLE, null, cv);        
    }

В main.java я конвертирую EditTexts в Strings, затем помещаю значения в базу данных:

    String name = sqlName.getText().toString();
    String hotness = sqlHotness.getText().toString();

    hornot entry = new hornot(dbhelp.this);
    entry.open();
    entry.createEntry(name, hotness);
    entry.close();

Итак, что я должен написать для функции onItemClick?

1 Ответ

0 голосов
/ 25 февраля 2012

В методе onItemClick() у вас есть параметр позиции, который указывает позицию (в адаптере) строки списка, по которой щелкнули. Затем вы можете использовать getItemAtPosition на ListView, чтобы получить данные из строки:

lv.setOnItemClickListener(new OnItemClickListener(){
                public void onItemClick(AdapterView<?> parent, View view,
                        int position, long id) {
     String rowData = (String) lv.getItemAtPosition(position); //you'll need to make the lv as final
     String[] data = rowData.split(" "); //split the result using the spaces (so you could obtain the name, hotness and the other string you use)
     entry.createEntry(data[0], data[1]);
}

Я не знаю структуру вашей базы данных, поэтому не могу рекомендовать вам что-то уникальное id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...