2014-01-19 100 views
-1

newsitem是一個保存我的數據的類。 當我在列表視圖中單擊一個項目我得到這個錯誤:ClassCastException:無法轉換爲NewsItem

01-19 11:03:20.094: E/AndroidRuntime(860): FATAL EXCEPTION: main 

01-19 11:03:20.094: E/AndroidRuntime(860): java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.NewsItem 

01-19 11:03:20.094: E/AndroidRuntime(860): at com.example.ListViewContents$2.onItemClick(ListViewContents.java:72) 

01-19 11:03:20.094: E/AndroidRuntime(860): at android.widget.AdapterView.performItemClick(AdapterView.java:282) 

01-19 11:03:20.094: E/AndroidRuntime(860): at android.widget.AbsListView.performItemClick(AbsListView.java:1037) 

01-19 11:03:20.094: E/AndroidRuntime(860): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2449) 

01-19 11:03:20.094: E/AndroidRuntime(860): at android.widget.AbsListView.onTouchEvent(AbsListView.java:3085) 

01-19 11:03:20.094: E/AndroidRuntime(860): at android.widget.ListView.onTouchEvent(ListView.java:3591) 

點擊時應該是開放的活動。

這是在我的ListviewContents類onCreate方法:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.listviewcontents); 
    intent = getIntent(); 
    url_topic = intent.getIntExtra("key", 0); 
    listview = (ListView)findViewById(R.id.custom_list); 
    adapter = new LazyImageLoadAdapter(this,arraylist_newitems); 
    listview.setAdapter(adapter); 

    Button buttonrefresh = (Button)findViewById(R.id.button_refresh); 
    buttonrefresh.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      adapter.imageLoader.clearCache(); 
      adapter.notifyDataSetChanged(); 
     } 
    }); 

    new LongImageFetch().execute((Void)null); 

    listview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       String url ; 
       NewsItem newitem = (NewsItem) listview.getItemAtPosition(position); 
       url = newitem.getUrllink(); 
       Intent intent = new Intent(getApplicationContext(),WebViewActivity.class); 
       intent.putExtra("URL", url); 
       startActivity(intent); 
       } 
      }); 

} 
+0

你還沒有給出'NewsItem'類的代碼,但我認爲它至少有幾個字段是適度複雜的。您如何/爲什麼期望Java能夠將整數轉換爲NewsItem? –

+0

可以顯示其中'arraylist_newitems'聲明 – Raghunandan

回答

0
java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.NewsItem 

listview.getItemAtPosition(position);返回一個整數值。

但是你必須

NewsItem newitem = (NewsItem) listview.getItemAtPosition(position); 
// casting it to NewsItem 

你可能想

NewsItem newitem = (NewsItem)arraylist_newitems.get(position) 
+0

對象android.widget.AdapterView.getItemAtPosition(INT位置) (文件) – user3103823

+0

@ user3103823你可能想'NewsItem的newitem =(NewsItem)arraylist_newitems.get(位置)' – Raghunandan

+0

@ user3103823你的注意力是清楚地將整數轉換爲NewsItems並在我的評論中嘗試建議。 – Raghunandan

0

的OnItemClickListener你傳遞作爲參數來使用的視圖。

這是否工作:

NewsItem newitem = (NewsItem)view; 

+0

您的建議是NewsItem newitem =(NewsItem)view.getItemAtPosition(position) ; ? – user3103823

+0

如果您的列表是NewsItem的列表,則查看參數將是他們點擊的參數。只需使用(NewsItem)視圖;但是,如果您的列表是包含NewsItem的其他視圖的列表,請執行(NewsItem)view.findViewById(R.id.news_item)。也許你可以發佈你使用的佈局,如果這個評論沒有幫助。 – MikeHelland

相關問題