1

基本的に、私の質問は次のようなものです。

ListView をスクロールすると、すべてが白から黒に変わります

唯一の違いは、スクロール時に色が変わる TextView を扱っていることです (TextView は ListView 内にあります)。

TextView の setCacheColorHint(Color.WHITE) に似たメソッドがあるかどうか調べましたが、見つかりませんでした。

おそらく、デフォルトの TextColor を動的に設定する必要がありますか? 現在、XML で設定され、コードで変更されているためです。

どうすればこれを処理できますか?

色を青に変更するコード:

private void highlightSelectedFile(View vw)
{
    TextView fileName = (TextView) vw.findViewById(R.id.file_name);

    //Log.v("color: ", Integer.toString(fileName.getCurrentTextColor()));       

    if(fileName.getCurrentTextColor() == Color.BLACK) {
        fileName.setTextColor(Color.BLUE);

    } else {
        fileName.setTextColor(Color.BLACK);
        removeFromSelectedFiles(new File(fileName.getText().toString()));
    }
}

これらの TextView は、それらが含まれている ListView をスクロールした後、BLACK に戻ります。

    ListView lv = (ListView) ac.findViewById(android.R.id.list);
4

2 に答える 2

0

アダプタでは、のビューにデータを適用するデータ項目を使用している可能性がありますAdapter。スクロールすると、Viewsがリサイクルされ、別のオブジェクトgetView()で呼び出されます。View問題は簡単に修正できます。データ項目にもう1つのint color;変数を追加して、このように使用するだけです。

public View getView(int position, View convertView, ViewGroup parent) {
    // efficient stuff here

    // after applying your data
    fileName.setTextColor(data.color);
}

この方法も変更します。

private void highlightSelectedFile(DataItem data) { 
    if(data.color == Color.BLACK) {
        data.color = Color.BLUE; 
    } else {
        data.color = Color.BLACK;
        removeFromSelectedFiles(new File(fileName.getText().toString()));
    }
   // to update ListView
    myAdapter.notifyDataSetChanged();
}
于 2013-02-18T11:36:34.147 に答える