答えを求めてこのサイトを精査してきましたが、私が見つけた本当に簡単な解決策はありません。sqlite データベースを使用して、入力された色の名前で 16 進値を検索する Android アプリケーションを作成しています。TextView を動的に作成し、そのテキストとテキストの色を設定してから、それを ArrayList に追加すると、ArrayList が実行されます。 ListView に追加されました。テキストは ListView に表示されますが、その色のプロパティは設定されていません。各リストビュー項目に設定されたテキストの色を取得する方法を見つけたいと思っています。これまでの私のコードは次のとおりです。
クラス変数:
private ListView lsvHexList;
private ArrayList<String> hexList;
private ArrayAdapter adp;
onCreate() で:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.color2hex);
lsvHexList = (ListView) findViewById(R.id.lsvHexList);
hexList = new ArrayList<String>();
私のボタンハンドラーで:
public void btnGetHexValueHandler(View view) {
// Open a connection to the database
db.openDatabase();
// Setup a string for the color name
String colorNameText = editTextColorName.getText().toString();
// Get all records
Cursor c = db.getAllColors();
c.moveToFirst(); // move to the first position of the results
// Cursor 'c' now contains all the hex values
while(c.isAfterLast() == false) {
// Check database if color name matches any records
if(c.getString(1).contains(colorNameText)) {
// Convert hex value to string
String hexValue = c.getString(0);
String colorName = c.getString(1);
// Create a new textview for the hex value
TextView tv = new TextView(this);
tv.setId((int) System.currentTimeMillis());
tv.setText(hexValue + " - " + colorName);
tv.setTextColor(Color.parseColor(hexValue));
hexList.add((String) tv.getText());
} // end if
// Move to the next result
c.moveToNext();
} // End while
adp = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, hexList);
lsvHexList.setAdapter(adp);
db.close(); // close the connection
}