2012-05-08 32 views
2

このサイトでは、何か答えを探していましたが、私がこれで見つけた本当の簡単な解決策はありませんでした。私はsqliteデータベースを使って、入力された色の名前で16進値を調べるAndroidアプリケーションを作成しています。テキストとテキストの色を設定してから、ArrayListに動的にTextViewを作成してからArrayListを作成していますListViewに追加されました。テキストはListViewに表示されますが、そのcolorプロパティは設定されていません。私は本当に各リストビュー項目のテキストの色を設定する方法を見つけるのが好きです。ここに私のコードは、これまでのところです:リストビュー項目のテキストビューのテキスト色を設定しますか? (アンドロイド)

クラス変数:のonCreateで

private ListView lsvHexList; 

private ArrayList<String> hexList; 
private ArrayAdapter adp; 

():私のボタンのハンドラで

@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 
    } 

答えて

3

作成したTextViewをリストに追加するだけで、リストに文字列を追加するだけで、TextViでどのメソッドを呼び出しても問題ありませんEW:あなたがする必要がどのような

 if(c.getString(1).contains(colorNameText)) { 
     // ... 
     TextView tv = new TextView(this); 
     tv.setId((int) System.currentTimeMillis()); 
     tv.setText(hexValue + " - " + colorName); 
     tv.setTextColor(Color.parseColor(hexValue)); 

     hexList.add((String) tv.getText()); // apend only the text to the list 
     // !!!!!!!!!!!!!! lost the TextView !!!!!!!!!!!!!!!! 
    } 

は、別の配列に色を格納することで、実際のリストビューを作成する場合は、リスト内の適切な値に応じてそれぞれのTextViewの色を設定します。

これを行うには、ArrayAdapterを拡張し、内部にTextViewカラーのロジックを追加する必要があります。

+0

素晴らしいです。それはどのようにコードに見えますか?ここで初心者のプログラマー。 = P –

+0

私は今ListAdapterの例を持っていませんが、BaseAdapterを拡張するためのリンクを見てください。https://github.com/BinyaminSharet/Icelandic-Memory-Game/blob/master /src/com/icmem/game/BoardGridAdapter.java – MByD

+0

正確には役に立ちません。誰か? –

関連する問題