Я успешно реализовал свой AutoCompleteTextView, основанный на запросе SQLite и помещенный в адаптер массива. Это все работает прекрасно, однако я не могу заставить работать мой onclickevent.
Я просто хочу создать намерение передать выбранное значение новому действию. Я знаю, как создать onclicklistener. Я просто не уверен, как применить его к раскрывающемуся списку AutoCompleteTextView.
Ладно. Я решил это. Я просто плохо справлялся. Приведенный ниже код автоматически дополняет мое текстовое представление на основе простого оператора SELECT SQLite и выполняется, когда пользователь выбирает университет из раскрывающегося списка.
Событие onclick создает новое намерение и запускает новое действие, передавая выбор этому действию в рамках намерения.
final AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.ac_university);
String[] universities = myDbHelper.getAllUnis(db);
// Print out the values to the log
for(int i = 0; i < universities.length; i++)
{
Log.i(this.toString(), universities[i]);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, universities);
textView.setAdapter(adapter);
//textView.setOnItemSelectedListener(this);
textView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
Intent intent = new Intent(Main.this, Campus.class);
Bundle bundle = new Bundle();
bundle.putString("university_name", arg0.getItemAtPosition(arg2).toString());
bundle.putLong("_id", arg3);
intent.putExtras(bundle);
startActivity(intent);
}
Функция putExtra может использоваться для этой цели.
Вот пример ...
Сформировать действие отправки:
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> parent, View v, int pos, long id) {
ApplicationInfo x = appinstalled.get(pos);
PackageInfo y = appinstall.get(pos);
//Intent i = new Intent(InstalledPackages.this, Information.class);
i = new Intent(InstalledPackages.this, Information.class);
i.putExtra("i",x);
i.putExtra("j", y);
startActivity(i);
}
});
}
На принимающей стороне:
super.onCreate(savedInstanceState);
Intent myIntent = getIntent();
ApplicationInfo i = (ApplicationInfo)myIntent.getParcelableExtra("i");
PackageInfo j = (PackageInfo)myIntent.getParcelableExtra("j");