Контекст: я создал функцию поиска, она возвращает результаты в виде списка, и когда я нажимаю на один из результатов, я хочу, чтобы приложение перешло к одному из моих других действий, экран, который просто расширяемый список, заполненный HashMap, прокрутите до элемента, который был нажат в поиске, и разверните эту группу.
Что я уже знаю: у меня есть функция поиска, она создает список, и когда вы нажимаете на элемент, вы переходите к нужному списку действий. Я просмотрел этот вопрос и знаю, что может прокручивать до определенного элемента, и благодаря этому вопросу я знаю, что могу расширить конкретный пункт в списке. Когда я отправляю намерение начать действие, я добавляю текст, по которому щелкнули, в качестве дополнительных данных, а затем получаю данные в новом действии.
Чего я не знаю. После отправки намерения запустить новое действие представления списка я получаю введенные мной дополнительные данные, представляющие собой строку, являющуюся ключом элемента в списке. hashmap/текст в родительском представлении, который я хочу расширить. Как мне получить позицию группы, которую я хочу расширить, из ключа группы? (чтобы я мог в конечном итоге вызвать прокрутку и расширить методы для этого объекта)
Метод в моем доступном для поиска действии, который запускает новое действие:
private void doSearch(Cursor query) {
// get a Cursor, prepare the ListAdapter
// and set it
Cursor c = query;
startManagingCursor(c);
String[] from = new String[] {"QUANTITY", "_id"};
int[] to = new int[] {android.R.id.text1};
SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, c, from, to);
mListView.setAdapter(cursorAdapter);
Log.e("doSearch method:", "has been called");
mListView.setOnItemClickListener(
new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// When clicked, log with the TextView text
Log.e("doSearch method:", "Answer: " + ((TextView) view).getText());
if(cMap.containsKey(((TextView) view).getText())){
Intent i=new Intent(getApplicationContext(),CommonConstants.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("key", ((TextView) view).getText());
getApplicationContext().startActivity(i);
} else if (chMap.containsKey(((TextView) view).getText())){
Intent i=new Intent(getApplicationContext(),PhysicoChemicalConstants.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("key", ((TextView) view).getText());
getApplicationContext().startActivity(i);
} else if (aMap.containsKey(((TextView) view).getText())){
Intent i=new Intent(getApplicationContext(),AtomicNuclearConstants.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("key", ((TextView) view).getText());
getApplicationContext().startActivity(i);
}
else if (eMap.containsKey(((TextView) view).getText())){
Intent i=new Intent(getApplicationContext(),ElectromagneticConstants.class);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.putExtra("key", ((TextView) view).getText());
getApplicationContext().startActivity(i);
}
else{
Log.e("doSearch method:", "not any map ");
}
}
});
}
Новое действие просмотра списка, которое запускается предыдущим методом:
public class PhysicoChemicalConstants extends SearchViewActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_physico_chemical_constants);
MyDataProvider dp = new MyDataProvider(this);
ExpandableListView view;
view = (ExpandableListView) findViewById(R.id.expandableList);
HashMap constantsHashMap;
constantsHashMap = dp.getChemMap();
ArrayList constantsHashMapKeys = new ArrayList<String>(constantsHashMap.keySet());
MyCustomAdapter adapter = new MyCustomAdapter(this, constantsHashMap, constantsHashMapKeys);
view.setAdapter(adapter);
Intent intent = getIntent();
String mKey = intent.getStringExtra("key");
//creates toolbar
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
}
}
Большое спасибо за любую помощь!