Java 在Android应用程序上访问外部数据库
我正在访问一个外部数据库(000webhost),用于获取应用程序中的电子邮件地址并将其打印到Java 在Android应用程序上访问外部数据库,java,android,json,listview,Java,Android,Json,Listview,我正在访问一个外部数据库(000webhost),用于获取应用程序中的电子邮件地址并将其打印到列表视图中。我从正在logcat中打印的服务器得到正确的响应,但我得到了空指针异常。 这就是我的logcat的样子: 05-11 16:00:39.891 24149-24914/info.androidhive.loginandregistration E/Entity Response:﹕ {"email":[{"email":"adeel@gmail.com"},{"email":"yamini
列表视图中。我从正在logcat中打印的服务器得到正确的响应,但我得到了空指针异常
。
这就是我的logcat的样子:
05-11 16:00:39.891 24149-24914/info.androidhive.loginandregistration E/Entity Response:﹕ {"email":[{"email":"adeel@gmail.com"},{"email":"yamini@gmail.com"},{"email":"mona@gmail.com"}]}{"tag":"DisplayFriends","error":true,"error_msg":"Unknown 'tag' value. It should be either 'login' or 'register'"}
<!-- Hosting24 Analytics Code -->
<script type="text/javascript" src="http://stats.hosting24.com/count.php"></script>
<!-- End Of Analytics Code -->
05-11 16:00:39.895 24149-24149/info.androidhive.loginandregistration D/AndroidRuntime﹕ Shutting down VM
05-11 16:00:39.898 24149-24149/info.androidhive.loginandregistration E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: info.androidhive.loginandregistration, PID: 24149
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)' on a null object reference
at info.androidhive.loginandregistration.FriendsList.setListAdapter(FriendsList.java:55)
at info.androidhive.loginandregistration.FriendsList$GetAllCustomerTask.onPostExecute(FriendsList.java:74)
at info.androidhive.loginandregistration.FriendsList$GetAllCustomerTask.onPostExecute(FriendsList.java:60)
at android.os.AsyncTask.finish(AsyncTask.java:636)
at android.os.AsyncTask.access$500(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:653)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
我是Android新手。如果有人能帮我找到代码中的错误,那就太好了
每当程序运行时,都会引发NullPointerException
尝试将null用作真实引用
因此,错误不在于从任何托管数据的地方获取数据。这是因为您试图使用的变量为空。
您已经完成了这个私有JSONArray JSONArray但是你也需要这样做variable=newvariable-type()代码>也可以分配内存<请检查上面的部分并用谷歌搜索一下。获取数据时没有错误,当您尝试对数据进行处理时会发生错误。
您只需声明如下所示的变量
private ListView listViewFriends;
private JSONArray jsonArray;
但这还不够。
您还需要在代码中定义它们。谢谢您的回复。!!我的问题解决了,我在setContentView()中传递了一个错误的参数。
public class FriendsList extends Activity {
private ListView listViewFriends;
private JSONArray jsonArray;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.listViewFriends=(ListView)this.findViewById(R.id.listViewFriends);
new GetAllCustomerTask().execute(new ApiConnector());
}
void setListAdapter(JSONArray jsonArray)
{
//this.jsonArray=jsonArray;
this.listViewFriends.setAdapter(new GetAllFriendsListViewAdapter(jsonArray,this));
}
private class GetAllCustomerTask extends AsyncTask<ApiConnector,Long,JSONArray>
{
@Override
protected JSONArray doInBackground(ApiConnector... params) {
// it is executed on Background thread
return params[0].GetAllCustomers();
}
@Override
protected void onPostExecute(JSONArray jsonArray)
{
setListAdapter(jsonArray);
}
}
}
public class GetAllFriendsListViewAdapter extends BaseAdapter
{
private JSONArray dataArray;
private Activity activity;
private static LayoutInflater inflater= null;
public GetAllFriendsListViewAdapter(JSONArray jsonArray, Activity a)
{
this.activity=a;
this.dataArray=jsonArray;
inflater= (LayoutInflater)this.activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount()
{
return this.dataArray.length();
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
ListCell cell;
if(convertView==null)
{
convertView=inflater.inflate(R.layout.item_layout,null);
cell=new ListCell();
cell.email=(TextView)convertView.findViewById(R.id.textViewFriends);
convertView.setTag(cell);
}
else
{
cell=(ListCell)convertView.getTag();
}
try
{
JSONObject jsonObject = this.dataArray.getJSONObject(position);
cell.email.setText(" "+jsonObject.getString("email"));
}
catch(JSONException e)
{
e.printStackTrace();
}
return convertView;
}
private class ListCell
{
private TextView email;
}
}
private ListView listViewFriends;
private JSONArray jsonArray;