私はmp3プレーヤーアプリを作っています。Androidを操作する画面外リストビュー項目がnullポインタ例外を投げる
現在再生中の曲を強調表示するために、現在の曲のリスト項目の背景色を変更します。
onItemClickListenerを使用して実際のリスト項目をクリックすると、すべてうまく動作します。また、現在の曲が終了した後、次の曲をハイライト表示するように自動更新することもできます。
ただし、次の曲リスト項目が画面上にあるときのみ。私が最初の曲の上にいて、リストの最後の曲に戻るために戻ると同じことが起こります。曲は正常に再生されますが、バックグラウンドカラーを設定しようとすると、リストアイテムにnullポインタ例外が発生します。
更新色方法:?(私は最後の行にnullポインタ#1 ff9966
public static void updateSongColor() {
if (currentSongPos == songs.size()-1) {
currentSongPos = 0;
}
else {
currentSongPos++;
}
currentSongView.setBackgroundColor(Color.parseColor("#FFFFFF"));
currentSongView = listView.getChildAt(currentSongPos);
currentSongView.setBackgroundColor(Color.parseColor("#ff9966"));
}
たぶん
それが膨張されていないため、まだ、私は実際に知らないを取得
を私は膨らませるにはどうすればよいです。または「負荷」私は動的の色を変更したいビュー、私が試してみました
:?
.setSelection()
バックグラウンドカラーを変更する前に、違いはありませんでした。移動してから、ロードされてnullにはならないと思いました。
この質問は、画面の外にあるビューを「プリロード」してパラメータ(背景色)を変更する方法を知りたいので、他の類似のものとは異なります。
重要なのはここに私のアダプタクラスですが、ここで何が関係するのかわからないので、もっとコードスニペットをリクエストしてください。
public class PlayListAdapter extends ArrayAdapter<Song> {
public PlayListAdapter(Context context, ArrayList<Song> objects) {
super(context, 0, objects);
}
@Override
public View getView(int position, View row, ViewGroup parent) {
Song data = getItem(position);
row = getLayoutInflater().inflate(R.layout.layout_row, parent, false);
TextView name = (TextView) row.findViewById(R.id.label);
name.setText(String.valueOf(data));
row.setTag(data);
return row;
}
}
ありがとうございます!
私を追加しました "答え" を参照してください(質問を読んで) – Danny