1

を使用してデータベースから名前をリストしましたが、のメソッドSimpleCursorAdapterを使用して特定の名前の色を変更したいと思います。SimpleCursorAdapter.ViewBinderこのメソッドの実行中に問題が発生しました。データベースには異なる名前が含まれていますが、ListViewすべての名前が1つの特定の名前として表示されます。私は何が間違っているのですか?特定の名前のテキストの色を変更するにはどうすればよいですか?使用できViewBinderますか?

これは私のコードの一部ですViewBinder

    SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {

    @Override
    public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
        // TODO Auto-generated method stub
        String[] temp = dh.return_result();
        tv = (TextView)findViewById(R.id.textView1);
        tv = (TextView) view;
        for(int i = 0; i<temp.length; i++)
        {
            if(temp[i].equalsIgnoreCase("Ameer Zhann"))
            {
                tv.setText(temp[i]);
                tv.setTextColor(Color.rgb(58, 58, 224));
                return true;
            }
        }
        return false;
    }
};

これが私の出力画像です:

画像

どうすればこれを解決できますか?

4

3 に答える 3

5

この方法を試してください:

public boolean setViewValue(View view, Cursor cursor, int columnIndex){    
    int getIndex = cursor.getColumnIndex("Name");
    String empname = cursor.getString(getIndex);
    tv = (TextView) view;
    tv.setTextColor(Color.WHITE);
    tv.setText(empname);
    if(empname.equals("Any String"))
    {                   
        tv.setTextColor(Color.rgb(58, 58, 224));
        return true;
    }
    return false;           
}
于 2011-12-15T10:01:49.527 に答える
3

コードはあなたが求めることを正確に実行します-あなたのすべての要素について、Cursorすべてのリストを調べ、各要素のテキストを設定します。「AmeerZhann」がリストの最後の結果だと思うので、このテキストだけがに残っていTextViewます。

setViewValue(...)のすべての要素に対して呼び出されるメソッドCursor。したがって、サイクルは必要ありません。テキストにカーソル値を入力するだけですtv.setText(Cursor.getString(...));

また、このコードには奇妙なことがあります。

tv = (TextView)findViewById(R.id.textView1);
tv = (TextView) view; 

viewこれはparamとして提供されます-すでにidで表示されているR.id.textView1-したがって、の呼び出しを削除するだけですfindViewById

于 2011-12-15T07:25:56.003 に答える
1

他の部分で試してください

if(temp[i].equalsIgnoreCase("Ameer Zhann")){
    tv.setText(temp[i]);
    tv.setTextColor(Color.rgb(58, 58, 224));
}else{
    tv.setText(temp[i]);
}

そして最後にfalseではなくtrueを返します

于 2011-12-15T07:16:16.427 に答える