читать базу данных при нажатии на просмотр списка - PullRequest
0 голосов
/ 05 июля 2011

У меня проблема с чтением базы данных из списка.

я могу показать всю свою базу данных и показать ее в виде списка, но как я могу получить информацию из своего списка при щелчке по списку (я создал базу данных с помощью диспетчера sqlite и поместил ее в папку ASSETS)

так вот мой код


package com.xxx;

import java.io.IOException;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class Select extends Activity {

private Header header;
private ListView lvUsers;
private ArrayList<UserBO> mListUsers;


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.select);

    header = (Header) findViewById(R.id.layoutHeader);
    header.init();

    mListUsers = getUsers();
    lvUsers = (ListView) findViewById(R.id.lv_user);
    lvUsers.setAdapter(new ListAdapter(this, R.id.lv_user, mListUsers));                

}

public ArrayList<UserBO> getUsers(){                

    DBAdapter dbAdapter=DBAdapter.getDBAdapterInstance(this);
    try {
        dbAdapter.createDataBase();
    } catch (IOException e) {
        Log.i("*** select ",e.getMessage());
    }
    dbAdapter.openDataBase();       
    String query="SELECT * FROM user;";
    ArrayList<ArrayList<String>> stringList = dbAdapter.selectRecordsFromDBList(query, null);
    dbAdapter.close();

    ArrayList<UserBO> usersList = new ArrayList<UserBO>();
    for (int i = 0; i < stringList.size(); i++) {
        ArrayList<String> list = stringList.get(i);
        UserBO user = new UserBO();
        try {
            user.id = Integer.parseInt(list.get(0));
            user.name = list.get(1);
            user.age = Long.parseLong(list.get(2));
        } catch (Exception e) {
            Log.i("***" + Select.class.toString(), e.getMessage());
        }
        usersList.add(user);
    }
    return usersList;
}

// ListAdapter закрытый класс ListAdapter расширяет ArrayAdapter {// --CloneChangeRequired частный ArrayList mList; // --CloneChangeRequired закрытый контекст mContext;

    public ListAdapter(Context context, int textViewResourceId,ArrayList<UserBO> list) { // --CloneChangeRequired
        super(context, textViewResourceId, list);
        this.mList = list;
        this.mContext = context;
    }

    public View getView(int position, View convertView, ViewGroup parent){
        View view = convertView;
        try{
        if (view == null) {
            LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = vi.inflate(R.layout.list_item, null);    // --CloneChangeRequired(list_item)
        }
        final UserBO listItem = mList.get(position);    // --CloneChangeRequired                
        if (listItem != null) {
            // setting list_item views                      
            ( (TextView) view.findViewById(R.id.tv_id) ).setText( listItem.getId()+"");
            ( (TextView) view.findViewById(R.id.tv_name) ).setText( listItem.getName() );
            ( (TextView) view.findViewById(R.id.tv_age) ).setText( listItem.getAge()+"" );

        }}catch(Exception e){
            Log.i(Select.ListAdapter.class.toString(), e.getMessage());             
        }
        return view;
    }

}

}


как я могу прочитать данные из списка на основе моей базы данных?

1 Ответ

1 голос
/ 05 июля 2011

установить прослушиватель щелчка для просмотра списка

lvUsers.setOnItemClickListener(this);

вывести usersList из этого метода make. создать метод получения, который даст данные, присутствующие в этой позиции. вызовите этот метод для прослушивателя кликов элементов

ArrayList<UserBO> usersList = new ArrayList<UserBO>();
    public ArrayList<UserBO> getUsers(){                

        DBAdapter dbAdapter=DBAdapter.getDBAdapterInstance(this);
        try {
            dbAdapter.createDataBase();
        } catch (IOException e) {
            Log.i("*** select ",e.getMessage());
        }
        dbAdapter.openDataBase();       
        String query="SELECT * FROM user;";
        ArrayList<ArrayList<String>> stringList = dbAdapter.selectRecordsFromDBList(query, null);
        dbAdapter.close();


        for (int i = 0; i < stringList.size(); i++) {
            ArrayList<String> list = stringList.get(i);
            UserBO user = new UserBO();
            try {
                user.id = Integer.parseInt(list.get(0));
                user.name = list.get(1);
                user.age = Long.parseLong(list.get(2));
            } catch (Exception e) {
                Log.i("***" + Select.class.toString(), e.getMessage());
            }
            usersList.add(user);
        }
        return usersList;
    }

Метод получения

UserBO getUserData(int position){
        usersList.get(position);
    }

в списке нажмите

@Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub
        getUserData(position);


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