私はプロのコーダーではありません。私はプロのコーダーではありませんが、私はアンドロイド開発の基本を学ぶための簡単なリストを持っています。ListViewの色の問題
私は仕事をしたいと思っているものすべてを手に入れることができましたが、私のリストビューには完全に困惑している問題が1つあります。私はSimpleCursorAdapterを拡張してsqliteデータベースからのデータをフォーマットし、duedateが期限切れになったかどうかに基づいてduedateテキストの色を変更しました。書式設定は完璧に機能しますが、私は色で奇妙な結果を得ています。
私が期待しているように、リストビューの最初の数エントリが表示されますが、下にスクロールすると、期限が設定されていないアイテムが赤または緑に変わります。リスト内を上下にスクロールするほど、最終的にすべての行が色付けされるかどうかにかかわらず、より多くの不一致が表示されます。
ここで何が起こっているのか誰かに教えてもらえますか?私のカスタムアダプターをご覧ください。
public class ProAdapter2 extends SimpleCursorAdapter {
private static int[] TO = {R.id.priority, R.id.projectname, R.id.duedate};
private static String[] FROM = {"priorities", "projectName", "dueDate"};
private Context context;
private int layout;
//constructor
public ProAdapter2(Context context, int layout, Cursor c) {
super(context,layout, c, FROM, TO);
this.context=context;
this.layout = layout;
}
@Override
public View newView(Context context, Cursor curso, ViewGroup parent){
Cursor c = getCursor();
final LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(layout, parent, false);
TextView txtName = (TextView) v.findViewById(R.id.projectname);
txtName.setText(c.getString(1));
TextView txtPriority = (TextView) v.findViewById(R.id.priority);
txtPriority.setText(c.getString(2));
return v;
}
@Override
public void bindView(View v, Context context, Cursor c) {
TextView txtDueDate = (TextView) v.findViewById(R.id.duedate);
TextView txtDueDateLabel = (TextView) v.findViewById(R.id.duedate_label);
TextView txtPriority = (TextView) v.findViewById(R.id.priority);
TextView txtPriorityLabel = (TextView) v.findViewById(R.id.priority_label);
TextView txtName = (TextView) v.findViewById(R.id.projectname);
LinearLayout pridate = (LinearLayout) v.findViewById(R.id.pridate);
String dueDate = c.getString(3);
String cDate = c.getString(4);
String dueDateFormated;
MyTime t = new MyTime();
Long cTimeLong = c.getLong(6);
Long dTimeLong = c.getLong(5);
dueDateFormated = t.getFormatedTime(c.getString(3));
txtDueDate.setText(dueDateFormated);
if (c.getInt(5)==0){
txtDueDate.setText("Not Set");
}
else if (cTimeLong < dTimeLong){
txtDueDate.setTextColor(Color.GREEN);
}
else if (cTimeLong > dTimeLong){
txtDueDate.setTextColor(Color.RED);
}
}
}
http://i.stack.imgur.com/bt4Z8.png
他の条件ならばuがでやっていることを理解していませんでした?あなたは説明することができます.. – viv
私のデータベースは、1970年1月1日からの経過時間を、Unixのエポックタイムフォーマットで保存します.SQLはまた、Unixのエポックタイムで現在の時刻を取得しやすくします。どちらが古いかを把握する。 – user548369