2014-11-25 49 views
0
public class PendingMessageFragment extends Fragment { 

RegistrationAdapter adapter_ob; 
RegistrationAdapter adapter_time; 
RegistrationOpenHelper helper_ob; 

ArrayList<MessageModel> pendingdata; 
ListView pendinglist; 
int j; 
SQLiteDatabase db_ob; 
ListView nameList; 
Button registerBtn; 
Cursor c; 
Cursor cursor; 
Bitmap bitmap; 
TextView ptimeview; 
ImageView postedimageviewrow; 
StringBuffer now3; 
String cool; 
Time present; 
@Override 


public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View V = inflater.inflate(R.layout.pendingmessage, container, false); 
    pendinglist=(ListView) V.findViewById(R.id.lv_name); 
    pendingdata=new ArrayList<MessageModel>(); 
    adapter_ob = new RegistrationAdapter(getActivity()); 
    adapter_time=new RegistrationAdapter(getActivity()); 
    cursor=adapter_ob.queryName(); 
    Log.d("value of cursor in pendfrag is",""+cursor); 
    cursor.moveToFirst(); 
    for(int i=0;i<cursor.getCount();i++) 
    { 
     MessageModel m=new MessageModel(); 
     m.setKey_Id(cursor.getString(cursor.getColumnIndex("_id"))); 
     m.setF_NAME(cursor.getString(cursor.getColumnIndex("F_NAME"))); 
     m.setF_Time(cursor.getString(cursor.getColumnIndex("F_Time"))); 
     pendingdata.add(m); 
     cursor.moveToNext(); 
    } 

    c=adapter_time.queryTime(); 
    Log.d("value of c befor onclick",""+c); 
    pendinglist.setAdapter(new MyPendingAdapter(getActivity(),pendingdata));   
    pendinglist.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      // TODO Auto-generated method stub 

      Bundle passdata = new Bundle(); 
      Log.d("arg0 is",""+arg0); 
      Log.d("arg2 is",""+arg2); 

      //Here Getting arg0 and arg2 but in next line geeting null in listcursor. 

      Cursor listCursor = (Cursor) arg0.getItemAtPosition(arg2); 
      Log.d("listcursor is",""+listCursor); 
      Log.d("column index is",""+j); 
      int nameId = listCursor.getInt(listCursor 
        .getColumnIndex(helper_ob.KEY_ID)); 

      c=adapter_time.queryAll2(nameId); 


        Intent passIntent = new Intent(getActivity(), 
          EditActivity.class); 
        passIntent.putExtras(passdata); 
        startActivity(passIntent); 



      } 

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

     } 
    }); 

    return V; 

} 
class MyPendingAdapter extends BaseAdapter 
{ 
    Activity activity; 
    ArrayList<MessageModel> arraylist; 

    public MyPendingAdapter(Activity a,ArrayList<MessageModel> arr) { 
     // TODO Auto-generated constructor stub 
     this.activity=a; 
     this.arraylist=arr; 
    } 

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

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

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


    @Override 
    public View getView(int arg0, View arg1, ViewGroup arg2) { 
     // TODO Auto-generated method stub 
     View v=getActivity().getLayoutInflater().inflate(R.layout.row,null); 

     arg0=j-arg0-1; 
     TextView t1=(TextView) v.findViewById(R.id.tv_fname); 
     TextView t2=(TextView) v.findViewById(R.id.ptime); 
     ImageView v1=(ImageView) v.findViewById(R.id.pendingimageviewrow); 


     bitmap=BitmapFactory.decodeResource(getActivity().getResources(),R.drawable.receviedpostedlogo); 

     v1.setImageBitmap(bitmap); 

     Log.d("pending message fragment time is",""+arraylist.get(arg0).getF_Time()); 
     t1.setText(arraylist.get(arg0).getF_NAME()); 
     t2.setText(arraylist.get(arg0).getF_Time()); 
     Log.d("the time is",""+arraylist.get(arg0).getF_Time()); 
     Log.d("t2 text is",""+t2.getText().toString()); 

     return v; 
    } 

} 
@Override 
public void onResume() { 
    super.onResume(); 
    cursor.requery(); 

} 

} 

該方案是從一個正確保存數據庫中挑選數據,我展示在列表視圖數據,但是當點擊任何項目它顯示在得到onclickitem的數據空指針異常。空指針異常的光標適配器

日誌是

11-25 11:42:48.779: D/arg0 is(1456): [email protected] 
11-25 11:42:48.779: D/arg2 is(1456): 2 
11-25 11:42:48.779: D/listcursor is(1456): null 
11-25 11:42:48.789: D/column index is(1456): 3 
11-25 11:42:48.789: D/AndroidRuntime(1456): Shutting down VM 
11-25 11:42:48.789: W/dalvikvm(1456): threadid=1: thread exiting with uncaught exception (group=0x40c1fa68) 
11-25 11:42:48.799: E/AndroidRuntime(1456): FATAL EXCEPTION: main 
11-25 11:42:48.799: E/AndroidRuntime(1456): java.lang.NullPointerException 
11-25 11:42:48.799: E/AndroidRuntime(1456): at com.example.gate_keeper.PendingMessageFragment$1.onItemClick(PendingMessageFragment.java:98) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.widget.AdapterView.performItemClick(AdapterView.java:292) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.widget.AbsListView.performItemClick(AbsListView.java:1394) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3024) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.widget.AbsListView$1.run(AbsListView.java:3830) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.os.Handler.handleCallback(Handler.java:605) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.os.Looper.loop(Looper.java:137) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at android.app.ActivityThread.main(ActivityThread.java:4517) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at java.lang.reflect.Method.invokeNative(Native Method) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at java.lang.reflect.Method.invoke(Method.java:511) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760) 
11-25 11:42:48.799: E/AndroidRuntime(1456): at dalvik.system.NativeStart.main(Native Method) 
11-25 11:42:48.829: E/AlarmManagerService(378): android_server_AlarmManagerService_set to type=3, 116.173000000 
+0

請發佈有NPE的logcat和提示行。 – 2014-11-25 05:32:25

+1

發佈您的logcat並檢查您的數據庫類是否已初始化。 – Piyush 2014-11-25 05:43:08

+0

@MysticMagic:添加logcat ...錯誤是在getItematPosition ...在arg0和arg2中的shwoinvalue ... – 2014-11-25 06:18:57

回答

0

試圖讓選擇列表數據持有者列表項數據:

int nameId = pendingdata.get(arg2).getKey_Id(); 

相反的:

int nameId = listCursor.getInt(listCursor.getColumnIndex(helper_ob.KEY_ID)); 
+0

:Thanx ...我浪費了1天在這個。解決了這個問題..但你可以解釋原因我的方法不工作...? – 2014-11-25 06:40:25

+0

@ RahulAggarwal,很高興爲您提供幫助,arg0代表適配器視圖參考,因此您無法從中找到光標信息。 – 2014-11-25 06:46:33

0

解決使用

問題int nameI d = pendingdata.get(arg2).getKey_Id();

代替:

INT =填充NameID listCursor.getInt(listCursor.getColumnIndex(helper_ob.KEY_ID));