İş Tecrubesi
Eğitim Geçmişi
Dil Becerileri
Son Forum Aktiviteleri
12Sqlite ile Mysql Senkronizasyonu
Merhabalar,
Aslında yapmak istediğim, uzak veritabanı sunucusundan verileri çekip listviewde göstermek. Bunu json ve bir kaç php dosyası ile yapabiliyoruz. Fakat telefon internete bağlı değilken, herhangi bir yere bağlanamayacağı için listviewin içerisi boş gözükecek.
Yapmak istediğim ise, telefon internete bağlıyken bir buton ile verileri çektikten sonra listviewde bir sonraki veri çekimine kadar durması. Yani uzaktaki veritabanından verileri telefona indireceğim, internetim olmasa da o verileri göstereceğim, verilerin güncellenebileceğini varsayarak, internete bağlandığımda telefonda varolan verilerin silinip, güncel verilerin yüklenmesini sağlayacağım.
Benim aklıma Mysql ile Sqlite arasında bir bağlantı kurarak senkronizasyon yapmak geldi. Belki DownloadManager kullanılarakta bir şekil yapılabilir ama öylesi daha bir karmaşık olacağını düşünüyorum.
Sizlerin tavsiye edebileceği, ya da daha uygun olabileceğini düşündüğünüz bir yöntem var mıdır ?
Cevaplarınız için şimdiden teşekkürler
Searchview ve JSON
Merhabalar, JSON ile mysqlden verileri çekebiliyorum, çektiğim verileri listview'de de gösterebiliyorum. Ama searchview ile listview in içerisinde anlık arama yaptıramıyorum. Her şey normal gidiyor ama arama kısmına yazar yazmaz hata verip kapanıyor.
Yani aslında yapmak istediğim, listviewe searchview uygulamak. Aşağıda kodlar ve hata mnesajı var.
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends Activity implements SearchView.OnQueryTextListener{
private String jsonResult;
private String url = "http://192.168.81.5/sql/a.php";
private ListView listView;
ArrayAdapter<String> adapter;
SearchView search_view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.list_view);
search_view = (SearchView) findViewById(R.id.search_view);
accessWebService();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// Async Task to access the web
private class JsonReadTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(params[0]);
try {
HttpResponse response = httpclient.execute(httppost);
jsonResult = inputStreamToString(
response.getEntity().getContent()).toString();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = rd.readLine()) != null) {
answer.append(rLine);
}
} catch (IOException e) {
// e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error..." + e.toString(), Toast.LENGTH_LONG).show();
}
return answer;
}
@Override
protected void onPostExecute(String result) {
ListDrwaer();
}
}// end async task
public void accessWebService() {
JsonReadTask task = new JsonReadTask();
// passes values for the urls string array
task.execute(new String[]{url});
}
// build hash set for list view
public void ListDrwaer() {
List<Map<String, String>> employeeList = new ArrayList<Map<String, String>>();
try {
JSONObject jsonResponse = new JSONObject(jsonResult);
JSONArray jsonMainNode = jsonResponse.optJSONArray("emp_info");
for (int i = 0; i < jsonMainNode.length(); i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String name = jsonChildNode.optString("Name");
String surname = jsonChildNode.optString("Surname");
String outPut = name + " " + surname;
employeeList.add(createEmployee("employees", outPut));
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(), "Error" + e.toString(),
Toast.LENGTH_SHORT).show();
}
SimpleAdapter adapter = new SimpleAdapter(this, employeeList,
android.R.layout.simple_list_item_1,
new String[]{"employees"}, new int[]{android.R.id.text1});
listView.setAdapter(adapter);
search_view.setOnQueryTextListener(this);
}
private HashMap<String, String> createEmployee(String name, String surname) {
HashMap<String, String> employeeNameNo = new HashMap<String, String>();
employeeNameNo.put(name, surname);
return employeeNameNo;
}
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText);
return false;
}
}
Aşağıdakiler de arama yapmaya başladığımda çıkan hata mesajları
05-23 07:45:17.905 29930-29930/com.example.alper.json E/InputEventSender: Exception dispatching finished signal.
05-23 07:45:17.905 29930-29930/com.example.alper.json E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
05-23 07:45:17.906 29930-29930/com.example.alper.json E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter android.widget.ArrayAdapter.getFilter()' on a null object reference
at com.example.alper.json.MainActivity.onQueryTextChange(MainActivity.java:145)
at android.widget.SearchView.onTextChanged(SearchView.java:1209)
at android.widget.SearchView.-wrap9(SearchView.java)
at android.widget.SearchView$9.onTextChanged(SearchView.java:1682)
at android.widget.TextView.sendOnTextChanged(TextView.java:7991)
at android.widget.TextView.handleTextChanged(TextView.java:8053)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:10157)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1033)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:559)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:491)
at android.text.method.QwertyKeyListener.onKeyDown(QwertyKeyListener.java:223)
at android.text.method.TextKeyListener.onKeyDown(TextKeyListener.java:136)
at android.widget.TextView.doKeyDown(TextView.java:6098)
at android.widget.TextView.onKeyDown(TextView.java:5911)
at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:720)
at android.view.KeyEvent.dispatch(KeyEvent.java:2640)
at android.view.View.dispatchKeyEvent(View.java:9234)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2395)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1727)
at android.app.Activity.dispatchKeyEvent(Activity.java:2725)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4127)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4089)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3820)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3981)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2253)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1874)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1865)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2230)
at android.view.In
05-23 07:45:17.906 29930-29930/com.example.alper.json D/AndroidRuntime: Shutting down VM
05-23 07:45:17.907 29930-29930/com.example.alper.json E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.alper.json, PID: 29930
java.lang.NullPointerException: Attempt to invoke virtual method 'android.widget.Filter android.widget.ArrayAdapter.getFilter()' on a null object reference
at com.example.alper.json.MainActivity.onQueryTextChange(MainActivity.java:145)
at android.widget.SearchView.onTextChanged(SearchView.java:1209)
at android.widget.SearchView.-wrap9(SearchView.java)
at android.widget.SearchView$9.onTextChanged(SearchView.java:1682)
at android.widget.TextView.sendOnTextChanged(TextView.java:7991)
at android.widget.TextView.handleTextChanged(TextView.java:8053)
at android.widget.TextView$ChangeWatcher.onTextChanged(TextView.java:10157)
at android.text.SpannableStringBuilder.sendTextChanged(SpannableStringBuilder.java:1033)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:559)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:491)
at android.text.method.QwertyKeyListener.onKeyDown(QwertyKeyListener.java:223)
at android.text.method.TextKeyListener.onKeyDown(TextKeyListener.java:136)
at android.widget.TextView.doKeyDown(TextView.java:6098)
at android.widget.TextView.onKeyDown(TextView.java:5911)
at android.widget.AutoCompleteTextView.onKeyDown(AutoCompleteTextView.java:720)
at android.view.KeyEvent.dispatch(KeyEvent.java:2640)
at android.view.View.dispatchKeyEvent(View.java:9234)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1640)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:2395)
at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1727)
at android.app.Activity.dispatchKeyEvent(Activity.java:2725)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:2310)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:4127)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4089)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3820)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3981)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2253)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1874)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1865)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInpu
Değerli fikirlerinizi bekliyorum. Aya da searchview yerine listview e başka nasıl filtre uygulayabilirim ?
Edittext içerisinde Button Kullanımı
Resimdeki tam olarak ne istediğimi anlatmıyor olabilir. Edittext içerisinde @drawableright/resim şeklinde edittext'in sağ kısmına button ekleyebiliyoruz. Benim sormak istediğim o butonu nasıl kullanıyoruz ? Aynı resimdeki gibi karakterleri girdikten sonra çarpı işaretine basınca edittext'i sıfırlayacak, yani temizleyecek.
Eminim basit bir kodu vardır da o kadar aramama rağmen(ya da doğru aramadığımdan ötürü) bulamadım. Yardımlarınız için şimdiden teşekkürler
Bu tasarimi nasil yapabilirim lutfen yardim(android studio)
Tabview ile ilgili örneklere bakabilirsin.
Sqlite ile Mysql Senkronizasyonu
O da bir seçenek ama benim datalarım bayağı bir detaylı olacak :)
2 Proglamlama Sorusu(ACİL)
istersen en baştan, python'dan da başlayabilirsin :) Bütün programlama dilleri birbirine benzer, javayı bilene c# öğrenmek kolay gelir, c# bilene java öğrenmek...
Türkiye çapında geçerli olacak bir projem var
projenle ilgili olabileceğini düşündüğün büyük firmalara başvurabilirsin.
[5]Android İle SQL Server nasıl cekebiliriz ?
http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
burada detaylı anlatımı var, işine yarayacak kısımları alabilirsin.
ya da google : android php json parser, android json parser diye aratırsan istediğin sonuçları bulabilirsin.