2014-10-30 2 views
-1

У меня есть список, в котором класс новостей имеет заголовок, дату, URL, изображение Url и Image alt. Когда я пытаюсь доступ к конкретному элементу новостей в позиции массива он бросает java.util.HashMap не может быть приведен к новостямHashmap в RecycerView не может быть передан в список

здесь адаптер Recycler http://hastebin.com/ohuvopoqiv.avrasm

редактировать: вот полный исключение

10-29 22:18:24.587 28148-28148/io.github.brady131313.shsnewspaper E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: io.github.brady131313.shsnewspaper, PID: 28148 
    java.lang.ClassCastException: java.util.HashMap cannot be cast to io.github.brady131313.shsnewspaper.News.NewsItem 
     at io.github.brady131313.shsnewspaper.News.NewsAdapter.onBindViewHolder(NewsAdapter.java:53) 
     at io.github.brady131313.shsnewspaper.News.NewsAdapter.onBindViewHolder(NewsAdapter.java:22) 
     at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:4048) 
     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3366) 
     at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3258) 
     at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1803) 
     at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1302) 
     at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1265) 
     at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:522) 
     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1918) 
     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2155) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:887) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1055) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1677) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1531) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1677) 
     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1531) 
     at android.widget.LinearLayout.onLayout(LinearLayout.java:1440) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:453) 
     at android.widget.FrameLayout.onLayout(FrameLayout.java:388) 
     at android.view.View.layout(View.java:15745) 
     at android.view.ViewGroup.layout(ViewGroup.java:4868) 
     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2330) 
     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2043) 
     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246) 
     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6567) 
     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:803) 
     at android.view.Choreographer.doCallbacks(Choreographer.java:603) 
     at android.view.Choreographer.doFrame(Choreographer.java:573) 
     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:789) 
     at android.os.Handler.handleCallback(Handler.java:733) 
     at android.os.Handler. 

редактировать: класс, где им прохождение Список

public class NewsSelectorFragment extends Fragment { 

    public static RecyclerView mRecyclerView; 
    public static Firebase firebase = new Firebase("https://shs-newspaper.firebaseio.com/"); 
    public static List<NewsItem> mNews = new ArrayList<NewsItem>(); 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.news_selector_fragment, container, false); 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    MainActivity.toolbar.setTitle("Sherwood Arrow"); 

    mRecyclerView = (RecyclerView) getActivity().findViewById(R.id.news_recycler); 
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    mRecyclerView.getRecycledViewPool().clear(); 
    mRecyclerView.setItemAnimator(new DefaultItemAnimator()); 

    firebase.child("News").addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      mNews = (List<NewsItem>) dataSnapshot.getValue(); 
      /*for (int i = 0; i < mNews.size(); i++) { 
       System.out.println(mNews.get(i)); 
      }*/ 

      mRecyclerView.setAdapter(new NewsAdapter(mNews)); 
     } 

     @Override 
     public void onCancelled(FirebaseError firebaseError) { 

     } 
    }); 
    } 
} 
+0

вывесить точное исключение пожалуйста – zmf

+0

я добавил полный Exeption – Brady131313

+0

http://stackoverflow.com/questions/22745306/hashmap-cannot-be-cast-to-java-lang-string – zmf

ответ

0

Код, с которым вы связаны (вы действительно должны включить соответствующий код здесь, а не только ссылку на него) устанавливает mNews двумя способами. Один устанавливает его как новый ArrayList. Другой позволяет ему проходить в примерно так:

public NewsAdapter(List<NewsItem> news) { 
    this.mNews = news; 
} 

Чтобы получить ошибки вы связаны (смотрите предыдущий пилить) где-то кто-то построил карту и бросил его в некотором роде, которые позволяют им проникнуть его к вам в mNews , Это заставляет его ломаться, как только вы пытаетесь использовать его в виде списка. Найдите, откуда это происходит.

+0

Лучше отредактировать свой первый ответ, не отправляя второй ответ. – Piyush

+0

Я использую firebase для извлечения данных, и когда я устанавливаю данные, которые я им делаю, делаю (список ), то почему бы ему установить его на hashmap – Brady131313

+0

Вам нужно было бы показать мне код, который дает его тебе. Но эта ошибка говорит вам, что вам была предоставлена ​​карта, а не список. Кастинг не исправляет это, поскольку он не наследуется от другого. – CandiedOrange

Смежные вопросы