开发者

read database when listview is clicked

开发者 https://www.devze.com 2023-03-17 04:23 出处:网络
i have problem reading database from listview. i can show all of my database and show it in the listview but how can i get information from my listview when listview is clicked (i made the database w

i have problem reading database from listview.

i can show all of my database and show it in the listview but how can i get information from my listview when listview is clicked (i made the database with sqlite manager and i put it in the ASSETS folder)

so this is my code


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 private class ListAdapter extends ArrayAdapter { // --CloneChangeRequired private ArrayList mList; // --CloneChangeRequired private Context 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()+"");开发者_StackOverflow
            ( (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;
    }

}

}


how can i read data from listview based on my datrabase?


set onitem click listener to the list view

lvUsers.setOnItemClickListener(this);

bring usersList out of that method make. create a getter method which will give data present on that position. call that method on item clik listener

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;
    }

Getter method

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

on list click

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


    }
0

精彩评论

暂无评论...
验证码 换一张
取 消