2013-03-07 35 views
0

我使用簡單的遊標適配器填寫sherlockListFragment名單。我這樣做了與loaders.But當我試圖顏色在列表中添加到文本。我是越來越Java.lang.Null.pointer exception.And我的Java代碼顏色設置到該項目中listFragment

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    Log.i("live", "onActivityCreated"); 
    super.onActivityCreated(savedInstanceState); 

    setEmptyText("Loading..."); 

     SimpleCursorAdapter.ViewBinder vb=new SimpleCursorAdapter.ViewBinder() { 

     @Override 
     public boolean setViewValue(View arg0, Cursor arg1, int arg2) { 
      Log.i("alls","inside set View Value"); 
      View inflate=getActivity().getLayoutInflater().inflate(R.layout.live_list_stock,null); 
      TextView tv=(TextView)inflate.findViewById(R.id.lpercent); 
      tv.setTextColor(Color.RED); 
      //String i=tv.getText().toString(); 
      //Log.i("alls",(i)); 
      // TODO Auto-generated method stub 
      return true; 
     } 
     }; 


    liveMyStocksadapter = new SimpleCursorAdapter(getActivity().getApplicationContext(), R.layout.live_list_item, null, new String[] {DBConstants.NAME,DBConstants.YSYMBOL,DBConstants.PRICE,DBConstants.PERCENT,DBConstants.DATE,DBConstants.TIME,DBConstants.OPEN,DBConstants.HIGH,DBConstants.LOW,DBConstants.VOLUME}, new int[] {R.id.lname,R.id.lysymbol, R.id.lprice,R.id.lpercent,R.id.ldate,R.id.ltime,R.id.lopen,R.id.lhigh,R.id.llow,R.id.lvolume},0); 
    setListAdapter(liveMyStocksadapter); 

    mycontext=this; 
    getActivity().registerReceiver(FragmentReceiver1, new IntentFilter("fragmentupdater")); 
    getActivity().getSupportLoaderManager().initLoader(0, null, this); 
    liveMyStocksadapter.setViewBinder(vb); 

感謝您的幫助..

+0

你可以把堆棧跟蹤 – DjHacktorReborn 2013-03-07 10:16:20

回答

0

你不需要使用視圖粘合劑時,膨脹的意見,SimpleCursorAdapter會爲你做。你所要做的就是設置這些值(並且只有當它們不是像圖像,連續字符串等那樣常見的值時)。注:字符串,整數和默認的無格式值由默認的視圖綁定器設置。您所需要的只是正確創建適配器。

當實現ViewBinder時,作爲新的SimpleCursorAdapter參數插入的所有視圖將作爲視圖參數值(arg0)以及遊標(arg1在右邊行)和列(arg2)傳遞給您)。

嘗試這樣:

public boolean setViewValue(View arg0, Cursor arg1, int arg2) { 
    switch(arg0.getId()) { 
    case R.id.lpercent: 
     ((TextView)arg0).setTextColor(Color.RED); 
     return false; // so it will set text view with DBConstants.PERCENT 
    case ...: // TODO: put here some view you don't want default view binder set and then return true 
     ((TextView)arg0).setText("non default value: " + arg1.getString(arg2)); 
    return true; 
    } 
} 
相關問題