1

이 내 응용 프로그램에 대한 제휴 활동이다

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:alignmentMode="alignBounds" 
android:orientation="horizontal" 
android:useDefaultMargins="true" > 

<TextView 
    android:id="@+id/allc_lstRow_textView1" 
    android:layout_width="50sp" 
    android:layout_height="wrap_content" 
    android:gravity="right" 
    android:paddingRight="10dp" 
    android:text="@string/tallc_id" 
    android:textSize="18sp"/> 
<TextView 
    android:id="@+id/allc_lstRow_textView2" 
    android:layout_width="140sp" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/allc_lstRow_textView1" 
    android:gravity="left" 
    android:text="@string/lst_item_allc_name" 
    android:textSize="18sp"/> 
<TextView 
    android:id="@+id/allc_lstRow_invisible" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/allc_lstRow_textView2" 
    android:layout_width="1dip" 
    android:gravity="left" 
    android:textSize="1sp"/> 
<TextView 
    android:id="@+id/allc_lstRow_textView3" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_toRightOf="@+id/allc_lstRow_invisible" 
    android:layout_gravity="right" 
    android:gravity="right" 
    android:text="@string/lst_item_allc_power" 
    android:textSize="18sp"/> 
</RelativeLayout> 

는 그리고 이것은 ViewBinder와 SimpleCursorAdapter이를 사용자 정의하는 것입니다 얼라이언스 (적위한 속국 및 레드 중립을위한 그레이, 블루 앨리를 들어, 녹색)의 색상 :

SimpleCursorAdapter dataAdapter = new SimpleCursorAdapter(
     this, 
     R.layout.lst_row_act_allc, 
     mCursor, 
     cols, 
     to, 
     0); 
    dataAdapter.setViewBinder(new SimpleCursorAdapter.ViewBinder() { 
     @Override 
     public boolean setViewValue(View view, Cursor cursor, int column) { 
      if(column == 1){ 
       TextView tv = (TextView) view; 
       String mPltc = cursor.getString(cursor.getColumnIndex("FPLTC")); 
       if (BuildConfig.DEBUG) { 
        Log.i(Constants.TAG_ACTALLIANCES, "loadAllianceData(): Alliance Name: "+cursor.getString(cursor.getColumnIndex("FANAME"))); 
        Log.i(Constants.TAG_ACTALLIANCES, "loadAllianceData(): Political Relation: "+mPltc); 
       } 
       // Set color of item based on Political Relation 
       if(mPltc.equals("Ally")){ 
        tv.setTextColor(Color.parseColor("#6699ff")); 
        String mAN = cursor.getString(cursor.getColumnIndex("FANAME")); 
        tv.setText(mAN); 
       } 
       if(mPltc.equals("Vassal")){ 
        tv.setTextColor(Color.parseColor("#00ff00")); 
        String mAN = cursor.getString(cursor.getColumnIndex("FANAME")); 
        tv.setText(mAN); 
       } 
       if(mPltc.equals("Enemy")){ 
        tv.setTextColor(Color.parseColor("#ff0000")); 
        String mAN = cursor.getString(cursor.getColumnIndex("FANAME")); 
        tv.setText(mAN); 
       } 
       if(mPltc.equals("Neutral")){ 
        String mAN = cursor.getString(cursor.getColumnIndex("FANAME")); 
        tv.setText(mAN); 
       } 
       return true; 
      } 
      return false; 
     } 
    }); 

지금 로그 캣 텍스트가 보임에 따라)

  1. setViewValue (더 실행됩니다 약자로, 두 가지 문제가 여기에있다,

    03-11 21:48:15.229: I/ActAlliances(7823): loadAllianceData(): Alliance Name: IMMORTALS 
    03-11 21:48:15.328: I/ActAlliances(7823): loadAllianceData(): Political Relation: Neutral 
    03-11 21:48:15.497: I/ActAlliances(7823): loadAllianceData(): Alliance Name: Legion of Anarchy 
    03-11 21:48:15.497: I/ActAlliances(7823): loadAllianceData(): Political Relation: Ally 
    03-11 21:48:15.590: I/ActAlliances(7823): loadAllianceData(): Alliance Name: TheCulture 
    03-11 21:48:15.590: I/ActAlliances(7823): loadAllianceData(): Political Relation: Enemy 
    03-11 21:48:15.608: I/ActAlliances(7823): loadAllianceData(): Alliance Name: Rising Storm 
    03-11 21:48:15.608: I/ActAlliances(7823): loadAllianceData(): Political Relation: Vassal 
    03-11 21:48:15.647: I/ActAlliances(7823): loadAllianceData(): Alliance Name: NULL ALLIANCE 
    03-11 21:48:15.647: I/ActAlliances(7823): loadAllianceData(): Political Relation: Neutral 
    03-11 21:48:15.677: I/ActAlliances(7823): loadAllianceData(): Alliance Name: OMEGA 27 
    03-11 21:48:15.677: I/ActAlliances(7823): loadAllianceData(): Political Relation: Neutral 
    

    그러나 : iew 동맹 이름이 정치의 관계를 나타내는 데이터베이스 테이블에서 열의와 일치되어 유지하지 ListView가 표시 될 때와 사용자가 수행하기 전에 4 번 미만입니다.

  2. 목록의 첫 번째 항목 (이 경우 IMMORTALS)은 마지막으로 적용된 색상에 따라 다시 채색됩니다 (목록 항목의 경우 회색이 기본 색상이기 때문에 중립적 인 동맹을 표시하기 때문에 실제로는 계산되지 않습니다). 색상을 적용하지 않고 이름 난이 버그를 수정하고, 일체의 지원을 부탁드립니다 필요

참고 :.. 내가 ListActivity를 사용하지 않았기 때문에 처음 두 줄 (부문, 제휴의 수) ListView의 일부가 아니며, 그 결정을 재고하기 위해 기꺼이합니다.

답변

1
  1. 여기에 문제가 실제로 표시되지 않습니다.
  2. 는 마지막 문장의 기본 값으로 텍스트 색상을 설정합니다

    if(mPltc.equals("Neutral")){ 
        tv.setTextColor(Color.parseColor("#444444")); 
        String mAN = cursor.getString(cursor.getColumnIndex("FANAME")); 
        tv.setText(mAN); 
    } 
    
  3. 그 외에는

, 내가 코드를 읽기 쉽게 만들기 추천 할 것입니다 - 당신은 모든 if 문에서 같은 일을 - 개인 메소드에 추출하거나 명령문 밖으로 이동하십시오.

if 문을 switch-case으로 대체하고 Enums을 사용할 수도 있습니다.

+0

네가 맞아. 그래서 ... 교훈은 "누구에게 행해지는 것이 모두에게 행해져 야합니다." 고맙습니다! 절대 돈이 떨어지지 않을 수 있습니다! – Quasaur