У меня есть оператор результата, который выполняет два запроса. первый запрос получает текст из редактируемого текста, но не после нажатия кнопки. второй получает кое-что из таблицы в базе данных. как я могу сделать onClickListener для моей кнопки, чтобы он получал текст, после нажатия кнопки ONLY запрос выполняется не всем классом (который содержит мой запрос)
здесь мой код (который сейчас выполняет весь класс)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
getSupportActionBar().hide();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
connectionClass = new ConnectionClass();
itemArrayList = new ArrayList<ClassListChat>();
listView = (ListView) findViewById(R.id.chatlist);
themsg = (EditText) findViewById(R.id.yourmsg);
send = (Button) findViewById(R.id.send);
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try{
String editTextData = themsg.getText().toString();
}
catch(Exception e) {
Log.e("ActivityName", "Exception caused by editText " + e.toString());
}
new SyncData(editTextData).execute();
}
});
}
private class SyncData extends AsyncTask<String, String, String> {
String msg;
ProgressDialog progress;
String editTextData;
public void SyncData(String editTextData) {
this.editTextData = editTextData;
}
@Override
protected void onPreExecute() //Starts the progress dailog
{
progress = ProgressDialog.show(ChatActivity.this, "Loading...",
"Please Wait...", true);
}
@Override
protected String doInBackground(String... strings) // Connect to the database, write query and add items to array list
{
runOnUiThread(new Runnable() {
public void run() {
try {
Connection conn = connectionClass.CONN(); //Connection Object
if (conn == null) {
success = false;
msg = "Sorry something went wrong,Please check your internet connection";
} else {
// Change below query according to your own database.
Date c = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy");
String formattedDate = df.format(c);
System.out.println("it isssssssssssssssssssssssssssssssssssssssssaaaaaaaaaaaaaaaaaaaa"+formattedDate);
String query = "Insert into CustomerSupportChat values('" + formattedDate + "','" + editTextData + "','Customer','3','"+getIntent().getStringExtra("nameid")+"','1','1') " +
"Select MessageID,MessageDate,MessageText,SenderType,MessageRecieved,MessageReaded,Users_Login_Data.Username,StoresData.StoreEnglishName,StoresData.StoreArabicName FROM " +
"CustomerSupportChat INNER JOIN Users_Login_Data ON " +
"CustomerSupportChat.CustomerID = Users_Login_Data.CustomerID INNER JOIN StoresData ON " +
"CustomerSupportChat.StoreID = StoresData.StoreID Where SenderType = 'Customer'";
String query2 =
"Select MessageID,MessageDate,MessageText,SenderType,MessageRecieved,MessageReaded,Users_Login_Data.Username,StoresData.StoreEnglishName,StoresData.StoreArabicName FROM " +
"CustomerSupportChat INNER JOIN Users_Login_Data ON " +
"CustomerSupportChat.CustomerID = Users_Login_Data.CustomerID INNER JOIN StoresData ON " +
"CustomerSupportChat.StoreID = StoresData.StoreID Where SenderType = 'Store'";
Statement stmt = conn.createStatement();
Statement stmt2 = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
ResultSet rs2 = stmt2.executeQuery(query2);
if (rs != null && rs2!= null) // if resultset not null, I add items to itemArraylist using class created
{
while (rs.next() && rs2.next()) {
try {
itemArrayList.add(new ClassListChat(rs.getString("MessageDate"),rs.getString("MessageText") ,rs.getString("SenderType"),rs2.getString("MessageText")));
System.out.println("THEY AREEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE "+rs.getString("MessageDate")+ " " +rs.getString("MessageText")+ " " + rs.getString("SenderType")+ " " + rs2.getString("MessageText"));
themsg.setText("");
} catch (Exception ex) {
ex.printStackTrace();
}
}
msg = "Found";
success = true;
} else {
msg = "No Data found!";
success = false;
}
}
} catch (Exception e) {
e.printStackTrace();
Writer writer = new StringWriter();
e.printStackTrace(new PrintWriter(writer));
msg = writer.toString();
Log.d("Error", writer.toString());
success = false;
}
}
});
return msg;
}
текст редактирования, из которого я хочу получить текст: themsg
.
РЕДАКТИРОВАТЬ: У меня есть обновил мой код, но теперь он показывает мне ошибку на втором editTextData в OnClickListener.