2017-09-28 24 views
0

AdapterRecyclerViewを使用して天気予報からスクロール可能なアイテムを作成したいとします。私の問題は、たとえにデータがあるデータを提供するのにArrayList<>を使用しても、ビューに何も表示されず、エラーもクラッシュもないことです。アプリが始まり、何も表示されません。マイActivityMain.onCreate()RecyclerViewには何も表示されません

JSONParser_basicは自作の単純なクラスであることを

private JSONParser_basic parser; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    parser = new JSONParser_basic(getResources() 
      .getString(R.string.weather_json)); 

    parser.divideToListElements(); 

    NewsRecycleAdapter adapter = new NewsRecycleAdapter(parser.getListElements()); 
    LinearLayoutManager lm = new LinearLayoutManager(this); 
    lm.setOrientation(LinearLayoutManager.VERTICAL); 

    RecyclerView rv = (RecyclerView) findViewById(R.id.recycleView); 
    rv.setLayoutManager(lm); 
    rv.setAdapter(adapter); 

} 

注意(練習のうち、特定の文字列からデータを取得するため)。私はJSON文字列からデータを取得し、それをコレクションlistElementsにロードするために使用します。それは仕事をして、私は問題はないデータを取得します。

マイNewsクラス:

public class News { 

    private String max; 
    private String min; 
    private String weather; 
    private String windForce; 

    public News(String max, String min, String weather, String windForce) { 
     this.max = max; 
     this.min = min; 
     this.weather = weather; 
     this.windForce = windForce; 
    } 

    public String formReport(){ 
     return max + "/" + min + ", " 
       + weather + ", " + 
       "Wind=" + windForce; 
    } 
} 

私はformReport方法を表示するには、このクラスをアップロードしました。

マイアダプタ:

public class NewsRecycleAdapter extends RecyclerView.Adapter<NewsRecycleAdapter.NewsViewHolder> { 

    List<News> items; 

    public NewsRecycleAdapter(List<News> items) { 
     this.items = items; 
    } 

    @Override 
    public NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType)  
    { 
     return new NewsViewHolder(View.inflate(parent.getContext(), 
       R.layout.list_element, 
       null)); 
    } 

    @Override 
    public void onBindViewHolder(NewsViewHolder holder, int position) { 
     News myNews = items.get(position); 
     holder.titleTV.setText(myNews.formReport()); 
    } 

    @Override 
    public int getItemCount() { 
     return items == null ? 0 : items.size(); 
    } 

    public class NewsViewHolder extends RecyclerView.ViewHolder { 
     public TextView titleTV, leadTV; 
     public NewsViewHolder(View itemView) { 
      super(itemView); 
      titleTV = (TextView) itemView.findViewById(R.id.title); 
     } 
    } 


}  

list_element.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:padding="7dp"> 

<TextView 
    android:id="@+id/title" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ellipsize="end" 
    android:maxLines="1" 

    android:text="some gibberish for now" 
    android:textStyle="bold" /> 

そして最後に、私のmain_activity.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.smth.myname.jeeesoooon.MainActivity"> 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/recycleView" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="parent" /> 

そして私は私のアプリのbuild.gradleこのラインを持っている:

compile 'com.android.support:recyclerview-v7:26.0.+' 

答えて

1

なぜRecyclerView高さと幅0dpはありますか?次へ

変更を:

android:layout_width="match_parent" 
android:layout_height="wrap_content" 

また、list_element.xmlで、wrap_contentにレイアウトの高さを変更:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
+0

ふむ、私はそこ0dpを置く理由、それは謎です。今それはうまく動作します、アドバイスのおかげで。 まあ、私はそう言いたいのですが、私はノービスの間違いをしました。 – agiro

関連する問題