Проблемы с Android ListView - PullRequest
       10

Проблемы с Android ListView

0 голосов
/ 13 октября 2011

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

Я хотел бы вставить данные в базу данных через EditText, а затем отобразить данные

Основная программа

package test.test;
import java.util.ArrayList;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;



public class TestActivity extends Activity {
/** Called when the activity is first created. */
private ListView listview;
private TextView textview;
private Button button;
private EditText edittext;
SQLiteDatabase databas;


//private String[] test = {"abc","abc","abc", "abc", "abc", "abc"};

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    ArrayList<String> test2 = new ArrayList<String>();  

    listview = (ListView)findViewById(R.id.test);
    textview = (TextView)findViewById(R.id.mm);
    button = (Button)findViewById(R.id.kanp);
    edittext = (EditText)findViewById(R.id.textetid);

    databas = (new dbHelper(this)).getWritableDatabase();
    final ContentValues values = new ContentValues();

    button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Editable ord = edittext.getText();
            String ordDb = ord.toString();

            //String sql =   "INSERT INTO ordlista (ord) " +
            //"VALUES (" + ordDb + ")";
            //databas.rawQuery(sql, null);

            values.put("ord", ordDb);
            long varde = databas.insert("ordlista", null, values);

            String varde2 = Long.toString(varde);
            textview.setText(varde2);


        }
    });
    //#############################TORSDAG###############################



    Cursor c = databas.rawQuery( "select ord from ordlista", null);
    startManagingCursor(c);

    int n = 1;
    while(c.isBeforeFirst() == false){
        String dbVarde = c.getString(n); 
        test2.add(dbVarde);
        c.moveToNext();
        n++;

    }







    ArrayAdapter<String> aa;
    aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, test2);
    listview.setAdapter(aa);


    //listview.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, test));




}



  }

1 Ответ

0 голосов
/ 13 октября 2011

Вы можете попробовать использовать SimpleCursorAdapter и сэкономить на обслуживании ArrayAdapter.Вместо того, чтобы постоянно заполнять ArrayList, вы можете просто создать курсор для запроса, когда вам нужно его обновить, и установить адаптер ListView.SimpleCursorAdapter также обладает дополнительным преимуществом обработки популяции элемента списка на основе предоставленных вами столбцов.

Например:

String[] fieldsFromDB = new String[] {"ord"};
int[] fieldsOnListItem = new int[] {android.R.id.text1};
Cursor c = databas.rawQuery("select ord from ordlista", null);

listview.setAdapter(new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,c,fieldsFromDB,fieldsOnListItem));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...