Я создал одну базу данных с тремя таблицами и поместил эту базу данных в папку с активами. Теперь я хочу показать значение из одного столбца в виде списка с помощью флажков, а затем, по выбору пользователя, хочу вставить их в другую таблицу. ТАК, как я могу это сделать.

До сих пор я извлекал данные и отображал их в списке. Но как я могу установить флажки, а затем получить значение, которое я не знаю. Код, который я использовал, ниже

1. основная деятельность

package com.example;

import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.widget.ListAdapter;
import android.widget.SimpleCursorAdapter;

public class MainActivity extends ListActivity {

    private Cursor employees;
    private MyDatabase db;

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

        db = new MyDatabase(this);
        employees = db.getEmployees(); // you would not typically call this on the main thread

        ListAdapter adapter = new SimpleCursorAdapter(this, 
                android.R.layout.simple_list_item_1, 
                employees, 
                new String[] {"FullName"}, 
                new int[] {android.R.id.text1});

        getListView().setAdapter(adapter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        employees.close();
        db.close();
    }

}

2.Mydatabase.java

package com.example;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;

import com.readystatesoftware.sqliteasset.SQLiteAssetHelper;

public class MyDatabase extends SQLiteAssetHelper {

    private static final String DATABASE_NAME = "northwind";
    private static final int DATABASE_VERSION = 2;

    public MyDatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);  
        //setForcedUpgradeVersion(2);
    }

    public Cursor getEmployees() {

        SQLiteDatabase db = getReadableDatabase();
        SQLiteQueryBuilder qb = new SQLiteQueryBuilder();

        String [] sqlSelect = {"0 _id", "FullName"}; 
        String sqlTables = "Employees";

        qb.setTables(sqlTables);
        Cursor c = qb.query(db, sqlSelect, null, null,
                null, null, null);

        c.moveToFirst();
        return c;

    }

}

Пожалуйста, предложите мне, как я могу это сделать .. Любая помощь должна быть оценена

0
ADB 12 Июл 2012 в 11:38
Вы столкнулись с проблемой добавления флажков в список ???
 – 
Goofy
12 Июл 2012 в 11:39
Например, я использовал адаптер списка, а затем, как я могу использовать флажки внутри него, а также затем я хочу вставить это выбранное значение в другую таблицу. Я новичок, поэтому не знаю, извиняюсь, если мой вопрос глупый @Goofy
 – 
ADB
12 Июл 2012 в 11:43
Так что вы хотите, чтобы флажки в списке ... не так ли?
 – 
Goofy
12 Июл 2012 в 11:53
Да, я хочу, а затем хочу вставить выбранные значения в таблицу @Goofy
 – 
ADB
12 Июл 2012 в 12:37
По этой ссылке можно найти флажки в списке windrealm.org/tutorials / android /…
 – 
Nirali
12 Июл 2012 в 12:50

1 ответ

Лучший ответ

С моей точки зрения, вы должны создать собственный адаптер для ListView и вручную перебирать набор данных результатов, обновляя ArrayList<MyObject> (который вы также должны создать).

Затем создайте некоторые функции в своем настраиваемом адаптере, чтобы получить «выбранные» элементы, или создайте некоторые функции, такие как public void setSelected(int position), который соответственно изменяет флажок, и private boolean isSelected(int position), который возвращает, установлен ли флажок или нет.

Прежде всего нам нужен класс объекта для хранения набора данных:

  class MyObject {
      //properties with setters and getters
      boolean selected;
  }

В действии:

private MyActivity extends Activity {
  ...
  ArrayList<MyObject> data = new ArrayList<MyObject>();
  ...
  //get dataset
  for(int i=0; i<cursor.getCount(); i++) {
     //create and set MyObject
     data.add(MyObject); 
  }     
  ...
  CustomAdapter myAdapter = new CustomAdapter(..., data);
  listView.setAdapter(myAdapter);
  ...
}

В классе CustomAdapter:

class CustomAdapter extends BaseAdapter {
   ArrayList<MyObject> data;
   //constructor, properties, getters, setters
   //implement methods

   public void setSelected(int position) {
      data.get(position).setSelected(true); //boolean selected property defines whether the checkbox is selected or not
      notifyDatasetChanged(); //update the UI
   }

   @Override
   getView() {
      CheckBox checkBox; //the check box of the list row
      ...
      if(data.get(position).isSelected()) {
         checkBox.setSelected(true);
      } else {
         checkBox.setSelected(false);
      } //update the checkbox accordingly
   }
}

Я очень кратко их записываю, чтобы дать вам обзор. Есть много кода, который нужно написать, но я дам вам "горячую часть".

2
10s 12 Июл 2012 в 13:05
Добавил код к моему ответу. Думаю, это поможет вам понять, но этот код не предназначен для копирования и вставки.
 – 
10s
12 Июл 2012 в 13:07