私はユーザーが動的に作成したeditTextを通してデータを入力するアンドロイドアプリを作成しています。これらのeditTextはList<EditText>
に格納され、List<String>
に変換されて値が取得されます。 List<String>
のこれらの値もString array
に変換され、データベース内のメソッドに渡され、ボタンクリックの結果が得られます。今私が直面している問題は、ボタンを2回クリックすると結果が得られるということです。配列リストから変換された配列がSQliteデータベースメソッドに渡されない最初のボタンをクリック
ここアクティビティここ
InfoBase base;
Button add;
int count = 1;
LinearLayout platform;
TextView showT, arr, multiview;
EditText addEdits;
List<EditText> values = new ArrayList<>();
List<String> results;
List<String> frmEdit;
String[] transVal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get_symptoms);
showT = (TextView) findViewById(R.id.textView2);
base = new InfoBase(this, null, null, 1);
arr = (TextView) findViewById(R.id.editArr1);
multiview=(TextView) findViewById(R.id.multiText);
add = (Button) findViewById(R.id.butAdd);
platform = (LinearLayout) findViewById(R.id.base);
add.setOnClickListener(generate);
results=new ArrayList<>();
frmEdit=new ArrayList<>();
}
View.OnClickListener generate = new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i = 0; i < count; i++) {
addEdits = new EditText(getSymptomsActivity.this);
addEdits.setLayoutParams(new ActionBar.LayoutParams(400, 79));
addEdits.setText("");
platform.addView(addEdits);
values.add(addEdits);
}
}
};
public void getIt(View v) {
transVal = frmEdit.toArray(new String[frmEdit.size()]);
for (EditText et : values) {
String getVal = et.getText().toString();
frmEdit.add(getVal);
}
results = base.getDiagnosis(transVal);
StringBuilder builder = new StringBuilder();
for (String details : results) {
builder.append(details + "\n");
}
arr.setText(builder.toString());
StringBuilder builder1 = new StringBuilder();
for (String multi : frmEdit) {
builder1.append(multi + "\n");
}
}
}
のコードが配列DBヘルパー内に渡さなければならない方法である。
public Cursor backwardSearch(String[] testVal){
SQLiteDatabase db = getReadableDatabase();
String query="SELECT S."+COLUMN_SYMP+", S."+COLUMN_SYM_ID+" AS _id FROM "+TABLE_LINKDS+
" DS JOIN "+TABLE_SYMPTOMS+" S ON DS."+COLUMN_SYMPTOMS_ID+"= S."+COLUMN_SYM_ID+
" JOIN "+TABLE_DISEASE+" D ON DS."+COLUMN_DISEASE_ID+"= D."+COLUMN_DS_ID+
" WHERE D."+COLUMN_NAME+" IN ("+toArrayRep(testVal) +") ORDER BY S."+COLUMN_SYMP+" ASC";
Cursor c= db.rawQuery(query,null);
return c;
}
public static String toArrayRep(String[] in) {
StringBuilder result = new StringBuilder();
for (int i = 0; i < in.length; i++) {
if (i != 0) {
result.append(",");
}
result.append("'" + in[i] + "'");
}
return result.toString();
}
Iダイナミックから値を表示しようとしましたテキストビューでList<String>
に変換されたedit-textをクリックしてボタンをクリックすると表示されますが、ボタンを2回クリックすると最終結果が得られます。私はList<String>
が最初のクリックでString array
に変換されないと思っています。
あなたは正しいGeorgeです。ありがとうございました – mcprilla79
よろしくお願いいたします。 –