2015-12-03 51 views
0

大家好我是新來的android develop.Now我正在學習recyclerView。 所以我想在回收視圖中顯示1到18的數字。我知道這很容易,但我不能這樣做。當我運行我的應用程序時出現錯誤。我找不到任何代碼錯誤。我的recyclerView有什麼問題?

這裏是我的MainActivity

package com.example.niyamat.golfscoreboard; 

import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 
import android.view.Menu; 
import android.view.MenuItem; 

import java.util.ArrayList; 
import java.util.List; 

public class MainActivity extends AppCompatActivity { 
public static final String TAG = MainActivity.class.getSimpleName(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 



    ScoreboardAdapter scoreboardAdapter = new ScoreboardAdapter(getData()); 
    recyclerView.setAdapter(scoreboardAdapter); 
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this); 
    recyclerView.setLayoutManager(layoutManager); 
    recyclerView.setHasFixedSize(true); 

} 

private ArrayList<HoleNumber> getData() { 
    ArrayList results = new ArrayList<HoleNumber>(); 
    for (int i = 0; i < 19; i++) { 
     HoleNumber holeNumber = new HoleNumber(i); 
     results.add(holeNumber); 
    } 
    return results; 
} 


} 

這裏是我的適配器

package com.example.niyamat.golfscoreboard; 

import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 

    import java.util.ArrayList; 

    /** 
    * Created by Niyamat on 12/2/2015. 
    */ 
    public class ScoreboardAdapter extends RecyclerView.Adapter<ScoreboardAdapter.ScoreBoardViewHolder> { 

private ArrayList<HoleNumber> mHoleNumbers; 

public ScoreboardAdapter(ArrayList<HoleNumber> holeNumbers) { 
    mHoleNumbers = holeNumbers; 
} 

@Override 
public ScoreBoardViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.scoreboard_layout, parent, false); 
    ScoreBoardViewHolder scoreBoardViewHolder = new ScoreBoardViewHolder(view); 
    return scoreBoardViewHolder; 
} 

@Override 
public void onBindViewHolder(ScoreBoardViewHolder holder, int position) { 
    holder.mHoleNumber.setText(mHoleNumbers.get(position).getHoleNumber()); 

} 

@Override 
public int getItemCount() { 
    return mHoleNumbers.size(); 
} 

public class ScoreBoardViewHolder extends RecyclerView.ViewHolder { 
    public TextView mHoleNumber; 
    public ScoreBoardViewHolder(View itemView) { 
     super(itemView); 
     mHoleNumber = (TextView) itemView.findViewById(R.id.holeNumber); 
    } 


    } 
    } 

這裏是我的模型

package com.example.niyamat.golfscoreboard; 

/** 
* Created by Niyamat on 12/2/2015. 
    */ 
public class HoleNumber { 
private int mHoleNumber; 

public HoleNumber(int holeNumber) { 
    mHoleNumber = holeNumber; 
} 

public int getHoleNumber() { 
    return mHoleNumber; 
} 

public void setHoleNumber(int holeNumber) { 
    mHoleNumber = holeNumber; 
} 
} 

最後在我的logcat中顯示我的錯誤,當我跑應用程序

FATAL EXCEPTION: main 
                       Process: com.example.niyamat.golfscoreboard, PID: 2065 
                       android.content.res.Resources$NotFoundException: String resource ID #0x0 
                        at android.content.res.Resources.getText(Resources.java:312) 
                        at android.widget.TextView.setText(TextView.java:4417) 
                        at com.example.niyamat.golfscoreboard.ScoreboardAdapter.onBindViewHolder(ScoreboardAdapter.java:31) 
                        at com.example.niyamat.golfscoreboard.ScoreboardAdapter.onBindViewHolder(ScoreboardAdapter.java:14) 
                        at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:5217) 
                        at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:5250) 
                        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4487) 
                        at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4363) 

我也更新了我的代碼在github上 這裏是鏈接 https://github.com/niyamatalmass/Golf_Scoreboard

+0

'$資源NotFoundException:字符串資源ID#0x0'因爲這裏:'持有人.mHoleNumber.setText(mHoleNumbers.get(position).getHoleNumber());''將'int'傳遞給'setText'方法 –

+0

謝謝ΚятьсервистройK –

回答

1

修改onBindViewHolder的這樣的代碼

holder.mHoleNumber.setText(mHoleNumbers.get(position).getHoleNumber()+""); 
+0

我更喜歡使用String.valueOf(int)' – 1615903

+0

@ 1615903是的,我們可以做也是這樣。 –

+0

謝謝Nigam Patro。 –