0

모두에게 굿 이어입니다.목록보기 안의 두 테이블을 업데이트하고 업데이트 매개 변수를 전달합니다.

글쎄,이 질문은, 내가 listview의 논리를 이해하고 그것을 클릭 한 항목에 대한 정보를 검색하는 방법을 알고 싶습니다.

나는이 응용 프로그램을 수행하는 자습서를 사용자 정의하고 사용자 정의했으며, 이제는 내가이 못 생기고 더러운 코드에서 무엇을하는지 알아 내려고 노력하고 있습니다.

나는 일련의 질문을 나열하는 활동이 있는데, 카테고리를 선택하고 질문을 선택하면 다음 활동으로 넘어 가서 몇 가지 대답이 나열되고 사용자가 하나를 선택할 수 있습니다. 나는 모든 질문 대신 사용자가 대답해야하는 질문 만 나열하고 싶습니다. "fatta"라는 범주 테이블에 새 열을 추가했습니다. "done"을 영어로 변경하면 1로 변경하고 싶습니다. 사용자는 해당 질문의 답을 클릭합니다.

그래서 아이디어는 질문의 ID를 전달하는 것이 었습니다. 그래서 내가 대답을 나열하는 활동에서 답변과 질문 테이블을 모두 업데이트하여 "완료 필드"로 설정할 수있었습니다.

하지만 뭔가 잘못되었습니다. 여기 코드는 다음과 같습니다

활동 : 내가 데이터 소스가 private static final String strdomanda = null;으로 내가 맨 위에 정의 된 strdomanda를 사용하여 위치를 마지막에 여기 볼 수

public class sondaggioActivity extends ListActivity{ 
    private static final String strdomanda = null; 
    private pollDataSource datasource; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.maindomanda); 

     long domanda = getIntent().getExtras().getLong("domanda"); 
     TextView text = (TextView) findViewById(R.id.domanda); 
     String strdomanda = Long.toString(domanda); 
    // text.setText(strcategory); 

     datasource = new pollDataSource(this); 
     datasource.open(); 


     Cursor values = datasource.getTestoRisposte(strdomanda); 
    // data? if (values.moveToFirst()) 

    //  System.out.println(values.getString(values.getColumnIndex("sondid"))); 



     String[] categorieColumns = 
      { 
       MySQLiteHelper.COLUMN_RISPOSTA // Contract class constant containing the word column name 

      }; 

      int[] mWordListItems = { R.id.categoria_label }; 

     SimpleCursorAdapter adapter = new SimpleCursorAdapter(
       getApplicationContext(),    // The application's Context object 
       R.layout.single_list_item,    // A layout in XML for one row in the ListView 
       values,        // The result from the query 
       categorieColumns,      // A string array of column names in the cursor 
       mWordListItems,      // An integer array of view IDs in the row layout 
       0);         // Flags (usually none are needed) 

     setListAdapter(adapter); 
    //values.close(); 
    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 

    datasource.setRispostaSelezionata(Long.toString(id)); 

    datasource.setDomandaFatta(strdomanda); 
    datasource.close(); 

    finish(); 



    } 

} 

onListItemClick있다이 같은 :

public class pollDataSource { 
    // Database fields 
     private SQLiteDatabase database; 
     private MySQLiteHelper dbHelper; 
     private String[] allCategorieColumns = { MySQLiteHelper.COLUMN_ID, 
      MySQLiteHelper.COLUMN_PREF, MySQLiteHelper.COLUMN_NOME }; 
     private String[] allSondaggiColumns = { MySQLiteHelper.COLUMN_ID, 
       MySQLiteHelper.COLUMN_CATID,MySQLiteHelper.COLUMN_WEBID,MySQLiteHelper.COLUMN_FATTA, MySQLiteHelper.COLUMN_DOMANDA }; 
     private String[] allRisposteColumns = { MySQLiteHelper.COLUMN_ID, 
       MySQLiteHelper.COLUMN_SONDID,MySQLiteHelper.COLUMN_WEBID, MySQLiteHelper.COLUMN_RISPOSTA, 
       MySQLiteHelper.COLUMN_SELEZIONATA }; 


     public pollDataSource(Context context) { 
      dbHelper = new MySQLiteHelper(context); 
      } 

     public void open() throws SQLException { 
      database = dbHelper.getWritableDatabase(); 
      } 

     public void close() { 
      dbHelper.close(); 
      } 

     public categorie createCategoria(String categoria) { 
      ContentValues values = new ContentValues(); 
      values.put(MySQLiteHelper.COLUMN_NOME, categoria); 
      values.put(MySQLiteHelper.COLUMN_PREF, 0); 
      long insertId = database.insert(MySQLiteHelper.TABLE_CATEGORIE, null, 
       values); 
      Cursor cursor = database.query(MySQLiteHelper.TABLE_CATEGORIE, 
       allCategorieColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null, 
       null, null, null); 
      cursor.moveToFirst(); 
      categorie newCategoria = cursorToCategorie(cursor); 
      cursor.close(); 
      return newCategoria; 
      } 

     public void deleteCategoria(categorie categoria) { 
      long id = categoria.getId(); 
      System.out.println("Categoria cancellata, id: " + id); 
      database.delete(MySQLiteHelper.TABLE_CATEGORIE, MySQLiteHelper.COLUMN_ID 
       + " = " + id, null); 
      } 

     public sondaggi createSondaggio(String domanda, int catid, int webid) { 
      ContentValues values = new ContentValues(); 
      values.put(MySQLiteHelper.COLUMN_DOMANDA, domanda); 
      values.put(MySQLiteHelper.COLUMN_CATID, catid); 
      values.put(MySQLiteHelper.COLUMN_WEBID, webid); 
      values.put(MySQLiteHelper.COLUMN_FATTA, "0"); 
      long insertId = database.insert(MySQLiteHelper.TABLE_SONDAGGI, null, 
       values); 
      Cursor cursor = database.query(MySQLiteHelper.TABLE_SONDAGGI, 
       allSondaggiColumns, MySQLiteHelper.COLUMN_ID + " = " + insertId, null, 
       null, null, null); 
      cursor.moveToFirst(); 
      sondaggi newSondaggio = cursorToSondaggi(cursor); 
      cursor.close(); 
      return newSondaggio; 
      } 


     public void deleteSondaggio(sondaggi sondaggio) { 
      long id = sondaggio.getId(); 
      System.out.println("Sondaggio cancellato, id: " + id); 
      database.delete(MySQLiteHelper.TABLE_SONDAGGI, MySQLiteHelper.COLUMN_ID 
       + " = " + id, null); 
      } 

     public Cursor getAllCategorie() { 
      List<categorie> categorie = new ArrayList<categorie>(); 

      Cursor cursor = database.query(MySQLiteHelper.TABLE_CATEGORIE, 
       allCategorieColumns, null, null, null, null, null); 

      cursor.moveToFirst(); 
      while (!cursor.isAfterLast()) { 
       categorie categoria = cursorToCategorie(cursor); 
       categorie.add(categoria); 
       cursor.moveToNext(); 
      } 
      // Make sure to close the cursor 
      // cursor.close(); 
      return cursor; 
      } 

     public Cursor getDomanda(String id) { 
      List<sondaggi> domande = new ArrayList<sondaggi>(); 


      Cursor cursor = database.query(MySQLiteHelper.TABLE_SONDAGGI, 
        allSondaggiColumns, 
        MySQLiteHelper.COLUMN_ID + "=?", 
        new String[] { id }, null, null, null); 

      cursor.moveToFirst(); 
      while (!cursor.isAfterLast()) { 
       sondaggi sondaggio = cursorToSondaggi(cursor); 
       domande.add(sondaggio); 
       cursor.moveToNext(); 
      } 

      return cursor; 
      } 


     private categorie cursorToCategorie(Cursor cursor) { 
      categorie categorie = new categorie(); 
      categorie.setId(cursor.getLong(0)); 
      categorie.setPreferita(cursor.getLong(1)); 
      categorie.setNome(cursor.getString(2)); 
      return categorie; 
      } 


     private sondaggi cursorToSondaggi(Cursor cursor) { 
      sondaggi sondaggi = new sondaggi(); 
      sondaggi.setId(cursor.getLong(0)); 
      sondaggi.setDomanda(cursor.getString(1)); 
      sondaggi.setCatid(cursor.getLong(2)); 
      sondaggi.setwebid(cursor.getLong(3)); 
      return sondaggi; 
      } 

    public Cursor getAllDomandeCategoria(String catid) { 
     List<sondaggi> domande = new ArrayList<sondaggi>(); 


     Cursor cursor = database.query(MySQLiteHelper.TABLE_SONDAGGI, 
       allSondaggiColumns, 
       MySQLiteHelper.COLUMN_CATID + "=?", 
       new String[] { catid }, null, null, null); 

     cursor.moveToFirst(); 
     while (!cursor.isAfterLast()) { 
      sondaggi sondaggio = cursorToSondaggi(cursor); 
      domande.add(sondaggio); 
      cursor.moveToNext(); 
     } 

     return cursor; 
    } 

    public Cursor getTestoRisposte(String strdomanda) { 

     List<testo_risposte> domande = new ArrayList<testo_risposte>();  
     Cursor cursor = database.query(MySQLiteHelper.TABLE_TESTORISPOSTE, 
       allRisposteColumns, 
       MySQLiteHelper.COLUMN_SONDID + "=?", 
       new String[] { strdomanda }, null, null, null); 

     cursor.moveToFirst(); 
     while (!cursor.isAfterLast()) { 
     testo_risposte sondaggio = cursorToTestoRisposte(cursor); 
      domande.add(sondaggio); 
      cursor.moveToNext(); 
     } 

     return cursor; 
    } 

    private testo_risposte cursorToTestoRisposte(Cursor cursor) { 
     testo_risposte testo_risposte = new testo_risposte(); 
     testo_risposte.setId(cursor.getLong(0)); 
     testo_risposte.setCatid(cursor.getLong(1)); 
     testo_risposte.setWebid(cursor.getLong(4)); 
     testo_risposte.Setselezionata(cursor.getLong(2)); 
     testo_risposte.setDomanda(cursor.getString(3)); 
    return testo_risposte; 
    } 

    public void setRispostaSelezionata(String id) {  
     ContentValues values = new ContentValues(); 
     values.put(MySQLiteHelper.COLUMN_SELEZIONATA, "1"); 
     database.update(MySQLiteHelper.TABLE_TESTORISPOSTE,values,MySQLiteHelper.COLUMN_ID + "=?", new String[] { id });  
    } 

    public void setDomandaFatta(String strdomanda) { 
     ContentValues values = new ContentValues(); 
     values.put(MySQLiteHelper.COLUMN_FATTA, "1"); 
     database.update(MySQLiteHelper.TABLE_SONDAGGI,values,MySQLiteHelper.COLUMN_ID + "=?", new String[] { strdomanda }); 

    } 


} 

하지만 난 활동, 첫 번째 updadate 좋은 사라지고, 다른 하나는 일w을 실행으로 나는 질문을 "비활성화"하고 싶습니다. 아무 것도하지 않습니다 ... 나는 strdomanda를 통과하는 것이 좋은 방법이 아니라고 생각합니다. 어떤 도움이 필요합니까? 조언? 미리 감사드립니다.

답변

0
이 해결

: 이 내가이 줄 착각 :

private static String strdomanda = null; 

나는 Final 속성을 삭제 한과 내가 같은 변수의 다른 선언을 삭제 한 ... 지금 작동합니다.

관련 문제