2014-04-14 2 views
0

저는 안드로이드 응용 프로그램과 안드로이드 응용 프로그램간에 완벽한 연결이 필요합니다. 표시 사용자 조치 만 작동하지 않음이 메소드는 일부 데이터가있는 목록에 사용자를 표시합니다.안드로이드 응용 프로그램에서 BaseAdapter를 확장하고 Asyncktask를 사용하는 중 오류가 발생했습니다.

누구든지이 오류를 해결하는 데 도움이 될 수 있습니까 ??

부가 코드의 결과
package com.devleb.loginDemo; 

import java.util.HashMap; 

//@SuppressWarnings("serial") 
public class User extends HashMap<String, String> { 

    /** 
    * 
    */ 
    String name; 
    String date; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getDate() { 
     return date; 
    } 

    public void setDate(String date) { 
     this.date = date; 
    } 

} 
,617 User.java

04-14 23:17:57.766: D/this from internet(2367): usersList.get(position).getDate() is null 

로그 캣 오류

04-14 21:59:22.170: E/AndroidRuntime(1951): FATAL EXCEPTION: main 
04-14 21:59:22.170: E/AndroidRuntime(1951): java.lang.NullPointerException 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at com.devleb.loginDemo.CustomAdapter.getView(CustomAdapter.java:60) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.AbsListView.obtainView(AbsListView.java:2177) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.ListView.makeAndAddView(ListView.java:1840) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.ListView.fillDown(ListView.java:675) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.ListView.fillFromTop(ListView.java:736) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.ListView.layoutChildren(ListView.java:1655) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.AbsListView.onLayout(AbsListView.java:2012) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.View.layout(View.java:14289) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewGroup.layout(ViewGroup.java:4562) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1434) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.View.layout(View.java:14289) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewGroup.layout(ViewGroup.java:4562) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.View.layout(View.java:14289) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewGroup.layout(ViewGroup.java:4562) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at com.android.internal.widget.ActionBarOverlayLayout.onLayout(ActionBarOverlayLayout.java:349) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.View.layout(View.java:14289) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewGroup.layout(ViewGroup.java:4562) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.widget.FrameLayout.onLayout(FrameLayout.java:448) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.View.layout(View.java:14289) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewGroup.layout(ViewGroup.java:4562) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:1976) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1730) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.Choreographer.doCallbacks(Choreographer.java:562) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.Choreographer.doFrame(Choreographer.java:532) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.os.Handler.handleCallback(Handler.java:730) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.os.Handler.dispatchMessage(Handler.java:92) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.os.Looper.loop(Looper.java:137) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at android.app.ActivityThread.main(ActivityThread.java:5103) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at java.lang.reflect.Method.invoke(Method.java:525) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
04-14 21:59:22.170: E/AndroidRuntime(1951):  at dalvik.system.NativeStart.main(Native Method) 

list_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background_1" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/uid" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:visibility="gone" /> 

    <TextView 
     android:id="@+id/name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:paddingLeft="6dip" 
     android:paddingTop="20dip" 
     android:text="text view" 
     android:textColor="#FFFFFF" 
     android:textSize="17dip" 
     android:textStyle="bold" /> 

    <TextView 
     android:id="@+id/txtCreateDate" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentTop="true" 
     android:text="TextView" 
     android:textColor="#FFFFFF" /> 

</RelativeLayout> 
이다

CustomAdapter.java

package com.devleb.loginDemo; 

import java.util.ArrayList; 
import java.util.Date; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 

public class CustomAdapter extends BaseAdapter { 

    private static ArrayList<User> usersList = new ArrayList<User>(); 

    // private static ArrayList name, date; 
    LayoutInflater layoutInflater; 
    String[] userName; 
    Date[] createdDate; 
    Context context; 

    @SuppressWarnings("rawtypes") 
    public CustomAdapter(ArrayList<User> result, Context c) { 
     usersList = result; 
     context = c; 

    } 

    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return usersList.size(); 
    } 

    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return usersList.get(arg0); 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return arg0; 
    } 

    @Override 
    public View getView(int position, View arg1, ViewGroup parent) { 
     // TODO Auto-generated method stub 

     layoutInflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View row = null; 

     row = layoutInflater.inflate(R.layout.list_item, parent, false); 
     TextView txtCreateDate = (TextView) row 
       .findViewById(R.id.txtCreateDate); 

     txtCreateDate.setText(usersList.get(position).getDate()); 

     TextView txtName = (TextView) row.findViewById(R.id.name); 

     txtName.setText(usersList.get(position).getName()); 
     return row; 
    } 

} 

Log.d(TAG, txtCreateDate == null ? "txtCreateDate is null" : usersList.get(position) == null ? "usersList.get(position) is null" : usersList.get(position).getDate() == null ? "usersList.get(position).getDate() is null" : "nothing is null"); 

또한

txtCreateDate.setText(usersList.get(position).getDate().toString()); 

하기 전에, 당신이 당신을 초기화 할 필요가 없습니다 넣어 UserListActivity.java

package com.devleb.loginDemo; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 

import org.apache.http.NameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ListActivity; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ListAdapter; 
import android.widget.ListView; 
import android.widget.SimpleAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 

public class UserListActivity extends ListActivity { 

    JSONParser jsonParser = new JSONParser(); 

    // ArrayList<HashMap<String, String>> usersList; 

    // **** added from internt*************/// 
    @SuppressWarnings("rawtypes") 
    ArrayList<User> arrayList_userList; 
    ListView lvUsers; 
    // **** added from internt*************/// 

    private static String url_display_user = "http://10.0.3.2/android_connect/display_user.php"; 

    // JSON Node names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_MESSAGE = "message"; 

    private static final String TAG_ID = "id"; 

    private static final String TAG_USERS = "userlist"; 

    private static final String TAG_USER = "user"; 
    private static final String TAG_DATE = "date"; 

    // private static final String TAG_NAME = "name"; 

    // employees JSONArray 
    JSONArray users = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_list); 

     // usersList = new ArrayList<HashMap<String, String>>(); 

     new getUserList().execute(); 

     // getListView 
     lvUsers = (ListView) findViewById(android.R.id.list); 

     lvUsers.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View view, int arg2, 
        long arg3) { 

       // String id = ((TextView) 
       // view.findViewById(R.id.uid)).getText() 
       // .toString(); 

       // Intent in = new Intent(getBaseContext(), StatusList.class); 
       // in.putExtra(TAG_ID, uid); 

       // startActivity(in); 
      } 
     }); 
    } 

    class getUserList extends AsyncTask<String, String, String> { 

     /** 
     * Before starting background thread Show Progress Dialog 
     * */ 
     @Override 
     protected void onPreExecute() { 
      super.onPreExecute(); 

      UserListActivity.this.setProgressBarIndeterminateVisibility(true); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      // TODO Auto-generated method stub 

      // Building Parameters 
      List<NameValuePair> parametres = new ArrayList<NameValuePair>(); 
      // getting JSON string from URL 
      JSONObject json = jsonParser.makeHttpRequest(url_display_user, 
        "GET", parametres); 

      // Check your log cat for JSON reponse 
      Log.d("All Users: ", json.toString()); 

      try { 
       // Checking for SUCCESS TAG 
       int success = json.getInt(TAG_SUCCESS); 

       if (success == 1) { 
        // products found 
        // Getting Array of Products 
        users = json.getJSONArray(TAG_USERS); 

        // looping through All Users 
        for (int i = 0; i < users.length(); i++) { 
         JSONObject c = users.getJSONObject(i); 

         // Storing each json item in variable 
         String id = c.getString(TAG_ID); 
         String user = c.getString(TAG_USER); 
         String cdate = c.getString(TAG_DATE).toString(); 

         // creating new HashMap 
         User map = new User(); 

         // adding each child node to HashMap key => value 
         map.put(TAG_ID, id); 
         map.put(TAG_USER, user); 
         map.put(TAG_DATE, cdate); 

         // adding HashList to ArrayList 

         // usersList.add(map); 

         arrayList_userList.add(map); 
        } 
        // ***********************************// 
        // From the internet 

        // arrayList_userList = new 
        // ArrayList<User>(usersList.value()) 

        // **********************************// 

        return json.getString(TAG_MESSAGE); 
       } else { 

        return json.getString(TAG_MESSAGE); 

       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

      return null; 
     } 

     /** 
     * After completing background task Dismiss the progress dialog 
     * **/ 
     protected void onPostExecute(String result) { 
      // dismiss the dialog after getting all products 
      if (result != null) { 

       UserListActivity.this 
         .setProgressBarIndeterminateVisibility(false); 

       /** 
       * Updating parsed JSON data into ListView 
       * */ 
       /* 
       * ListAdapter adapter = new 
       * SimpleAdapter(UserListActivity.this, usersList, 
       * R.layout.list_item, new String[] { TAG_ID, TAG_USER }, new 
       * int[] { R.id.uid, R.id.name }); // updating listview 
       * setListAdapter(adapter); 
       */ 
       lvUsers.setAdapter(new CustomAdapter(arrayList_userList, 
         getBaseContext())); 

       Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG) 
         .show(); 

      } 
     } 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.user_list, menu); 
     return true; 
    } 

} 
+1

'CustomAdapter'의 줄 60은 무엇입니까? – Naddy

+0

이 코드 줄 ** txtCreateDate.setText (usersList.get (position) .getDate(). toString()); ** – user3499032

+0

R.layout.list_item도 게시하십시오. – uDevel

답변

0

setDate()가 없으므로 getDate()가 null입니다.

    // creating new HashMap 
        User map = new User(); 

        // adding each child node to HashMap key => value 
        map.put(TAG_ID, id); 
        map.put(TAG_USER, user); 
        map.put(TAG_DATE, cdate); 

HashMap을 사용하는 것이 보이지 않습니다. 그러나 테스트를 위해 여기에 그대로 두십시오.

추가 map.setName (user); map.setDate (cdate);

그게 전부입니다.

+0

그리고 태그에 대해 당신은 내가 그것을 어떻게 사용자 클래스에 넣으라고 했습니까? – user3499032

+0

데모 목적으로 모든 것을 그대로두고 두 줄을 추가하십시오. – uDevel

+0

당신은 정말 화격자입니다. 이제 해시 맵을 던짐으로써 당신이 의미하는 바를 이해합니다. 고맙습니다. 그러나 당신이 그것으로 나를 도울 수 있다면 여전히 하나의 질문이 있습니다 – user3499032

0

usersList?

+0

로그가 반환 값이 null임을 나타냅니다 ???? – user3499032

+0

죄송합니다. 좀 더 구체적으로 기재하십시오. "usersList.get (position) .getDate()가 null입니까?" – uDevel

+0

getDate 메서드는 User 클래스의 메서드입니다.이 메서드는 mysql 데이터베이스의 값을 반환해야하므로 내 코드가 잘못되었습니다 ??? – user3499032

관련 문제