So i'm trying to get a listview of names from my database mysql, but i keep getting a error, saying that the array i'm storing info in is == null. This is the code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class LVTut extends Activity{
static String host = "jdbc:mysql://localhost:3306/application";
static String username = "Kasea";
static String password = "A9x0j99v66hl69aJ";
String result[];
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.listviewdemo);
getName();
populateListView();
registerClickCallback();
}
private void populateListView() {
// TODO Auto-generated method stub
//Create list of items.
String[] myItems = result;
//Build Adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.da_item, myItems);
// Configure the list view.
ListView list = (ListView) findViewById(R.id.lvRanking);
list.setAdapter(adapter);
}
private void registerClickCallback() {
// TODO Auto-generated method stub
ListView list = (ListView) findViewById(R.id.lvRanking);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {
// TODO Auto-generated method stub
TextView textView = (TextView) viewClicked;
String message = "You clicked # " + position
+ ", which is string: " + textView.getText().toString();
Toast.makeText(LVTut.this, message, Toast.LENGTH_LONG).show();
}
});
}
public static String[] getName(){
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String result[] = null;
try {
Connection connect = DriverManager.getConnection(host, username, password);
PreparedStatement statement = connect.prepareStatement("SELECT users.displayname, users.gender FROM users, picture WHERE users.id=picture.user_id ORDER BY picture.finalsum DESC LIMIT 100");
ResultSet rs = statement.executeQuery();
ArrayList<String> list = new ArrayList<String>();
while (rs.next()){
list.add(rs.getString("displayname"));
}
result = new String[list.size()];
result = list.toArray(result);
statement.close();
connect.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
/*for(int i =0; i<result.length; i++){
System.out.println(result[i]);
}*/
return result;
}
}
this is the logcat i get:
08-06 02:27:01.085: D/AndroidRuntime(2603): Shutting down VM
08-06 02:27:01.085: W/dalvikvm(2603): threadid=1: thread exiting with uncaught exception (group=0xb2ed7648)
08-06 02:27:01.095: E/AndroidRuntime(2603): FATAL EXCEPTION: main
08-06 02:27:01.095: E/AndroidRuntime(2603): java.lang.RuntimeException: Unable to start activity ComponentInfo{alexxela.xela.kasea/alexxela.xela.kasea.LVTut}: java.lang.NullPointerException: storage == null
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.os.Handler.dispatchMessage(Handler.java:99)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.os.Looper.loop(Looper.java:137)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.ActivityThread.main(ActivityThread.java:5103)
08-06 02:27:01.095: E/AndroidRuntime(2603): at java.lang.reflect.Method.invokeNative(Native Method)
08-06 02:27:01.095: E/AndroidRuntime(2603): at java.lang.reflect.Method.invoke(Method.java:525)
08-06 02:27:01.095: E/AndroidRuntime(2603): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
08-06 02:27:01.095: E/AndroidRuntime(2603): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
08-06 02:27:01.095: E/AndroidRuntime(2603): at dalvik.system.NativeStart.main(Native Method)
08-06 02:27:01.095: E/AndroidRuntime(2603): Caused by: java.lang.NullPointerException: storage == null
08-06 02:27:01.095: E/AndroidRuntime(2603): at java.util.Arrays$ArrayList.<init>(Arrays.java:38)
08-06 02:27:01.095: E/AndroidRuntime(2603): at java.util.Arrays.asList(Arrays.java:154)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:128)
08-06 02:27:01.095: E/AndroidRuntime(2603): at alexxela.xela.kasea.LVTut.populateListView(LVTut.java:43)
08-06 02:27:01.095: E/AndroidRuntime(2603): at alexxela.xela.kasea.LVTut.onCreate(LVTut.java:32)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.Activity.performCreate(Activity.java:5133)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
08-06 02:27:01.095: E/AndroidRuntime(2603): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
08-06 02:27:01.095: E/AndroidRuntime(2603): ... 11 more
I know that the problem is that result[] is = to null, but i don't know why, i mean shouldn't my code add the info from the database into it? I know that the mysql query works, i've tested it and the results should in theory work, no?
Also if this isn't a "good" question, please tell me why :s apperently i've asked a lot of bad ones :P
0 comments:
Post a Comment