2014-01-19 58 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

相关问题