2014-05-25 27 views
0

我正在使用pull TO Refresh Libary:https://github.com/erikwt/PullToRefresh-ListViewAndroid ListView NullPointerException使用pulldowntoRefresh?

Logcat给了我NullPointerExcetpion(我认为在第77行)。请帮助,我很乐意解决这个问题。

我认为问题是与数组,适配器。

UPDATE1

我改变了xml文件ID来:机器人:ID = “@ + ID /列表” ,我也用Java文件正确地改变了它。 现在它显示了一个新的错误:

您的内容必须有一个ListView其id属性为 'android.R.id.list'

05-25 16:17:32.730: D/dalvikvm(29170): GC_FOR_ALLOC freed 65K, 20% free 8477K/10508K, paused 16ms, total 16ms 
05-25 16:17:32.730: I/dalvikvm-heap(29170): Grow heap (frag case) to 13.708MB for 3686416-byte allocation 
05-25 16:17:32.745: D/dalvikvm(29170): GC_FOR_ALLOC freed <1K, 15% free 12077K/14112K, paused 12ms, total 12ms 
05-25 16:17:32.855: D/dalvikvm(29170): GC_FOR_ALLOC freed <1K, 15% free 12076K/14112K, paused 10ms, total 10ms 
05-25 16:17:32.855: I/dalvikvm-heap(29170): Grow heap (frag case) to 27.771MB for 14745616-byte allocation 
05-25 16:17:32.870: D/dalvikvm(29170): GC_FOR_ALLOC freed 0K, 8% free 26476K/28516K, paused 13ms, total 13ms 
05-25 16:17:32.975: D/AbsListView(29170): Get MotionRecognitionManager 
05-25 16:17:32.985: D/ProgressBar(29170): setProgress = 0 
05-25 16:17:32.985: D/ProgressBar(29170): setProgress = 0, fromUser = false 
05-25 16:17:32.985: D/ProgressBar(29170): mProgress = 0mIndeterminate = false, mMin = 0, mMax = 100 
05-25 16:17:32.995: D/AndroidRuntime(29170): Shutting down VM 
05-25 16:17:32.995: W/dalvikvm(29170): threadid=1: thread exiting with uncaught exception (group=0x42466700) 
05-25 16:17:33.000: E/AndroidRuntime(29170): FATAL EXCEPTION: main 
05-25 16:17:33.000: E/AndroidRuntime(29170): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.scapp2014.seoul.zeisler.tripathi/com.scapp2014.seoul.zeisler.tripathi.parsingXML}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ActivityThread.access$700(ActivityThread.java:165) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.os.Looper.loop(Looper.java:176) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ActivityThread.main(ActivityThread.java:5455) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at java.lang.reflect.Method.invokeNative(Native Method) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at java.lang.reflect.Method.invoke(Method.java:525) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at dalvik.system.NativeStart.main(Native Method) 
05-25 16:17:33.000: E/AndroidRuntime(29170): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ListActivity.onContentChanged(ListActivity.java:243) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:364) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.Activity.setContentView(Activity.java:1956) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at com.scapp2014.seoul.zeisler.tripathi.parsingXML.onCreate(parsingXML.java:44) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.Activity.performCreate(Activity.java:5372) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
05-25 16:17:33.000: E/AndroidRuntime(29170): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267) 
05-25 16:17:33.000: E/AndroidRuntime(29170): ... 11 more 




main.xml: 

xmlParsing: 

    <?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#ffffff" > 

    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="match_parent" 
     android:layout_height="60dp" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:scaleType="fitXY" 
     android:src="@drawable/header" /> 



    <!-- Main ListView 
     Always give id value as list(@android:id/list) 
    --> 

    <eu.erikw.PullToRefreshListView 
     android:id="@+id/list" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_below="@+id/imageView1" 
     android:listSelector="@drawable/list_selector" 
     android:dividerHeight="1dp" 
     android:divider="#b5b4b4" /> 

</RelativeLayout> 


    package com.scapp2014.seoul.zeisler.tripathi; 

    public class parsingXML extends ListActivity { 

    // All static variables 
    static final String URL = "http://pipes.yahoo.com/pipes/pipe.run?_id=02df7ff302bb81e1944ad00f28a6a3b3&_render=rss"; 
    // XML node keys 
    static final String KEY_ITEM = "item"; // parent node 
    static final String KEY_TITLE = "title"; 
    static final String KEY_AUTHOR = "author"; 
    static final String KEY_DESC = "description"; 
    static final String KEY_DATE = "pubDate"; 

    private PullToRefreshListView listView; 

    ArrayList<HashMap<String, String>> menuItems; 


    @SuppressLint("NewApi") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     listView = (PullToRefreshListView) findViewById(R.id.list); 


     listView.setOnRefreshListener(new OnRefreshListener() { 

      @Override 
      public void onRefresh() { 

       listView.postDelayed(new Runnable() { 


        @Override 
        public void run() { 
         listView.onRefreshComplete(); 
        } 
       }, 50); 
      } 
     }); 




     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>(); 



     XMLParser parser = new XMLParser(); 
     String xml = parser.getXmlFromUrl(URL); // getting XML 
     Document doc = parser.getDomElement(xml); // getting DOM element 

     NodeList nl = doc.getElementsByTagName(KEY_ITEM); 
     // looping through all item nodes <item> 
     for (int i = 0; i < nl.getLength(); i++) { 
      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 
      Element e = (Element) nl.item(i); 
      // adding each child node to HashMap key => value 
      map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE)); 
      map.put(KEY_AUTHOR, parser.getValue(e, KEY_AUTHOR)) ; 
      map.put(KEY_DESC, parser.getValue(e, KEY_DESC) + "\n"); 
      map.put(KEY_DATE, parser.getValue(e, KEY_DATE)); 

      // adding HashList to ArrayList 
      menuItems.add(map); 
     } 

     // Adding menuItems to ListView 
     ListAdapter adapter = new SimpleAdapter(this, menuItems, 
       R.layout.list, 
       new String[] { KEY_TITLE, KEY_DESC, KEY_AUTHOR, KEY_DATE }, new int[] { 
         R.id.title, R.id.description, R.id.author, R.id.date }); 

     setListAdapter(adapter); 

     // selecting single ListView item 
     ListView lv = getListView(); 

     lv.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // getting values from selected ListItem 
       String name = ((TextView) view.findViewById(R.id.title)).getText().toString(); 
       String author = ((TextView) view.findViewById(R.id.author)).getText().toString(); 
       String description = ((TextView) view.findViewById(R.id.description)).getText().toString(); 
       String date = ((TextView) view.findViewById(R.id.date)).getText().toString(); 

       // Starting new intent 
       Intent in = new Intent(getApplicationContext(), singleGUI.class); 
       in.putExtra(KEY_TITLE, name); 
       in.putExtra(KEY_DESC, description); 
       in.putExtra(KEY_AUTHOR, author); 
       in.putExtra(KEY_DATE, date); 
       startActivity(in); 

      } 
     }); 




    } // end of main 



    } 
+0

发布您的logcat将是有益的。 – SteD

+0

我做到了。请帮忙。如果你能帮上忙,我会成为最快乐的人。 –

回答

0

既然要扩展ListActivity,你应该通过引用您的列表视图:

//listView = (PullToRefreshListView) findViewById(R.layout.list); 
listview = getListView(); 
+0

它在xml文件中说: –

+0

错误:错误:字符串类型不允许(在'id'值'+ @ id/ list')。 –

+0

哎呀,错字。我的意思是@ + id。答案已更新。 – SteD

1

如果使用listActivity你必须改变列表视图的ID在这样的XML:

android:id="@android:id/list" 

而在你的活动你喜欢STED列表说:

listview = getListView(); 
相关问题