2014-07-08 2 views
0

나는했습니다 이런 활동 클래스 :안드로이드는 사용자 정의보기 작업

public class MainActivity extends Activity { 

    private DbAdapter db; 
    private ArrayList<Integer> scelte; 
    private ArrayList<Schedina2> schedine; 
    private Schedina2 schedina1; 
    private Schedina2 schedina2; 
    private Schedina2 schedina3; 
    private Schedina2 schedina4; 
    private Schedina2 schedina5; 
    private Schedina2 schedina6; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 

     scelte = new ArrayList<Integer>(); 
     schedine = new ArrayList<Schedina2>(); 

     db = new DbAdapter(this); 
     Log.d("DB", "Connessione al DB..."); 
     db.open(); 
     Log.d("DB", "connesso ! "); 

     scelte.add(1); 
     scelte.add(2); 
     scelte.add(3); 
     scelte.add(4); 
     scelte.add(5); 
     scelte.add(6); 
     scelte.add(7); 

     schedina1 = (Schedina2)findViewById(R.id.schedina1); 
     schedina2 = (Schedina2)findViewById(R.id.schedina2); 
     schedina3 = (Schedina2)findViewById(R.id.schedina3); 
     schedina4 = (Schedina2)findViewById(R.id.schedina4); 
     schedina5 = (Schedina2)findViewById(R.id.schedina5); 
     schedina6 = (Schedina2)findViewById(R.id.schedina6); 
     for (int i = 0; i < scelte.size(); i++) { 
      schedine.add(new Schedina2(getBaseContext().getApplicationContext())); 
      setSchedina(scelte.get(i),schedine.get(i));//schedine.get(i).setScheda(fillArray(c)); 
     } 
     // 1 
     //       Log.d("Schedina", "Recupero schedina numero "+ scelte.get(0)); 
     //       setSchedina(scelte.get(0),schedina1); 
     schedina1=schedine.get(0); 
     schedina1.postInvalidate(); 
     Log.d("Schedina", "Refresh schedina numero "+ scelte.get(0)); 

     // 2 
     //       Log.d("Schedina", "Recupero schedina numero "+ scelte.get(1)); 
     //       setSchedina(scelte.get(1),schedina2); 
     schedina2=schedine.get(1); 
     schedina2.postInvalidate(); 
     Log.d("Schedina", "Refresh schedina numero "+ scelte.get(1)); 

     // 3 
     //       Log.d("Schedina", "Recupero schedina numero "+ scelte.get(2)); 
     //       setSchedina(scelte.get(2),schedina3); 
     schedina3=schedine.get(2); 
     schedina3.postInvalidate(); 
     Log.d("Schedina", "Refresh schedina numero "+ scelte.get(2)); 

     // 4 
     //       Log.d("Schedina", "Recupero schedina numero "+ scelte.get(3)); 
     //       setSchedina(scelte.get(3),schedina4); 
     schedina4=schedine.get(3); 
     schedina4.postInvalidate(); 
     Log.d("Schedina", "Refresh schedina numero "+ scelte.get(3)); 

     // 5 
     //       Log.d("Schedina", "Recupero schedina numero "+ scelte.get(4)); 
     //       setSchedina(scelte.get(4),schedina5); 
     schedina5=schedine.get(4); 
     schedina5.postInvalidate(); 
     Log.d("Schedina", "Refresh schedina numero "+ scelte.get(4)); 

     // 6 
     //       Log.d("Schedina", "Recupero schedina numero "+ scelte.get(5)); 
     //       setSchedina(scelte.get(5),schedina6); 
     schedina6.postInvalidate(); 
     Log.d("Schedina", "Refresh schedina numero "+ scelte.get(5)); 

    } 


    private void setSchedina(int index, Schedina2 schedina){ 


     Log.d("FillArray", "chiamo fillArray per index = "+ index); 
     Cursor c = db.getContact(index); 
     if (c.isFirst()) { 
      int[] b = new int[28]; 
      for (int i = 0; i <28 ; i++) 
       b[i] = Integer.parseInt((String) c.getString(i)); 
      c.close(); 
      String debug ="Array = "; 
      for (int j = 0; j <b.length ; j++) 
       debug += b[j]+"-"; 

      Log.d("FillArray", debug); 
      schedina.setScheda(b); 
     } else { 
      Log.d("FillArray", "Errore fillArray per index = "+ index); 
     } 
    } 
} 

시도 내가 로그 캣에서 추적 메시지를 볼 수있는 응용 프로그램을 실행하는 경우 : 나는를 표시 할

07-08 11:17:23.355: D/FillArray(3277): chiamo fillArray per index = 7 
07-08 11:17:23.376: D/FillArray(3277): Array = 7-0-12-20-32-41-0-0-72-0-5-0-0-35-47-53-0-74-0-0-17-22-0-0-0-61-75-83- 
07-08 11:17:23.376: D/Schedina(3277): Refresh schedina numero 1 
07-08 11:17:23.385: D/Schedina(3277): Refresh schedina numero 2 
07-08 11:17:23.385: D/Schedina(3277): Refresh schedina numero 3 
07-08 11:17:23.385: D/Schedina(3277): Refresh schedina numero 4 
07-08 11:17:23.385: D/Schedina(3277): Refresh schedina numero 5 
07-08 11:17:23.385: D/Schedina(3277): Refresh schedina numero 6 
07-08 11:17:23.665: D/gralloc_goldfish(3277): Emulator without GPU emulation detected. 
07-08 11:17:23.775: D/Schedina 0(3277): Scheda numero 0 
07-08 11:17:23.775: D/Schedina 0(3277): Scheda numero 0 
07-08 11:17:23.785: D/Schedina 0(3277): Scheda numero 0 
07-08 11:17:23.785: D/Schedina 0(3277): Scheda numero 0 
07-08 11:17:23.806: D/Schedina 0(3277): Scheda numero 0 
07-08 11:17:23.806: D/Schedina 0(3277): Scheda numero 0 

을 이 같은 번호보기 :

import junit.framework.Test; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.RectF; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.view.View; 
import android.widget.TableLayout; 
import android.widget.TableLayout.LayoutParams; 
import android.widget.TableRow; 

public class Schedina2 extends View { 

    private RectF rectangle; 
    private Paint paint; 
    private Paint testo; 
    private RectF[] schede; 
    private int numeroScheda; 
    private int[] numeri; 
    private Paint[] sfondo; 
    private int[] punteggio; 
    private Canvas canvas; 
    private int margin = 2; 
    private int offset = 30; 
    private int width = 30; 
    private int height = 50; 
    private int left_margin = 10; 
    private int spazio; 
    private Paint numeriTxt; 

    public Schedina2(Context context) { 
     super(context); 
     all(); 
    } 

    public int[] getPunteggio() { 
     return punteggio; 
    } 



    public Schedina2(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     all(); 
    } 


    public Schedina2(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     all(); 

    } 



    private void all() { 
     numeriTxt = new Paint(); 
     numeriTxt.setColor(Color.BLACK); 
     numeriTxt.setTextSize(17); 
     spazio = 32; 
     numeroScheda=0; 
     rectangle = new RectF(); 
     paint = new Paint(); 
     testo = new Paint(); 
     punteggio= new int[3]; 
     numeri= new int[27]; 
     schede = new RectF[28]; 
     sfondo = new Paint[28]; 
     for (int i=0; i<27 ;i++) { 
      schede[i] = new RectF(); 
      sfondo[i] = new Paint(); 
     } 
     rectangle.set(0, 0, 303, 200 ); 
     testo.setColor(Color.WHITE); 
     testo.setTextSize(18); 
     paint.setColor(Color.BLACK); 
     paint.setStrokeWidth(2); 
     Log.d("Schedina", "all fine"); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     this.canvas = canvas; 
     canvas.drawRoundRect(rectangle, 0, 0, paint); 

     for (int i=0; i<27 ;i++) { 
      int mod = (i%9); 
      if (i < 9) 
       schede[i].set((width*i)+(margin*i)+left_margin, margin+offset, (width*i)+(margin*i)+width+left_margin, height+margin+offset); 
      //     schede[i].set((width*i)+(margin*i), margin+offset, (width*(i+1))+(margin*i), height+margin+offset); 
      else if (i < 18) 
       schede[i].set(left_margin+(width*mod)+(margin*mod), height+(margin*2)+offset, left_margin+(width*mod)+(margin*mod)+width, (height*2)+(margin*2)+offset); 
      else if (i < 27) 
       schede[i].set(left_margin+(width*mod)+(margin*mod), (height*2)+(margin*3)+offset, left_margin+(width*mod)+(margin*mod)+width, (height*3)+(margin*3)+offset); 
      sfondo[i].setColor(Color.LTGRAY); 
      canvas.drawRect(schede[i], sfondo[i]); 
      if (numeri[i] > 0) { 
       if (i < 9 ) 
        canvas.drawText(Integer.toString(numeri[i]), 15+(spazio*i), 60, numeriTxt); 
       else if (i < 18 ) 
        canvas.drawText(Integer.toString(numeri[i]), 15+(spazio*(i%9)), 115, numeriTxt); 
       else if (i < 27 ) 
        canvas.drawText(Integer.toString(numeri[i]), 15+(spazio*(i%9)), 170, numeriTxt); 
      } 
     } 
     canvas.drawText("Scheda N: "+numeroScheda, 100, 25, testo); 
     Log.d("Schedina "+numeroScheda, "Scheda numero "+ numeroScheda); 

    } 


    public void setScheda(int[] array){ 

     for (int i = 0; i< array.length ; i++){ 
      if (i == 0) 
       numeroScheda = array[0]; 
      else if (i > 0) { 
       numeri[i-1]= array[i]; 
      } 
     } 
    } 


    public void setEstratto(int numero){ 
     for (int i = 1; i< numeri.length ; i++){ 
      if (numeri[i] == numero) { 
       sfondo[i-1].setColor(Color.RED); 
       punteggio[(int) ((i-1)/9)]++; 
       Log.d("Estratto", "trovato estratto "+ numero+" punteggio = " + (punteggio[0]+punteggio[1]+punteggio[2])); 
       break; 
      } 
     } 
    } 
} 

하지만 난 내가 활동에서 설정 한 번호없이 무효있는 CustomView를했습니다. 당신이 커서를 반복하려면 getContact 같은 (인덱스) 하나의 행이 먼저 행 데이터를 얻을 수 cursor.moveToFirst()를 사용하여 다음 cursor != null 있는지 확인하고 반환하는 경우

답변

0

당신은 moveToFirst()moveToNext()

Cursor cursor = db.getContact(index); 
if (cursor != null && cursor.moveToFirst()) { 
    do { 
     ...     
    } while (cursor.moveToNext()); 
} 

를 사용해야합니다.

관련 문제