Сохранить первый элемент списка в списке и добавить данные из базы данных после этого элемента

Я попытался найти это, но не смог получить какую-либо надлежащую помощь. Я пытаюсь сохранить первый элемент в виде списка фиксированным и добавить данные из базы данных после этого. Я успешно отображаю такого рода поведение, но проблема начинается, когда я использовать при щелчке по элементу в виде списка, я не могу получить правильный элемент, по которому щелкнул... фрагмент кода следующим образом copyFetchedData содержит данные из базы данных

for(int i = 0;i<copyFetchedData.size();i++){


    recentSearchedList.add(i, copyFetchedData.get(i).getName());
    selectedAdapter.notifyDataSetChanged();
}

RecentSearchedList.add(0, "Мое местоположение");

В приведенном выше фрагменте последняя строка перезаписывает позицию добавленного элемента и помещает Мое местоположение в первую позицию. Теперь фрагмент для on item click выглядит следующим образом.

@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {



    if (displayList == arg0) {

        if(position == 0){
            editLocation.setText("");
        }
        else{
            String fetchedName = (String) displayList.getItemAtPosition(position);
            Toast.makeText(getApplicationContext(), "Name is "+fetchedName, Toast.LENGTH_LONG).show();
            Constants.searchedLocLat = copyFetchedData.get(position).getLat();
            Constants.searchedLocLon = copyFetchedData.get(position).getLon();
            Constants.searchedLocName = copyFetchedData.get(position).getName();            
            editLocation.setText(Constants.searchedLocName);    
        }

    }


}

вывод, который я получаю с помощью этого, выбирает мне элемент неправильной позиции. Я знаю его, потому что я принудительно добавляю элемент в позицию 0, который вызывает такое поведение, может кто-то, пожалуйста, подскажите мне правильный способ сделать это..

1 ответ

Решение

Вы можете использовать addHeaderView() чтобы сделать это,

        ListView lv = (ListView)findViewById(R.id.listview1); //your listview object
        View hvw = findViewById(R.id.listrow);
        //Suppose you have one textview in that Row
        TextView tv = hvw.findViewById(R.id.tv1); // get textview object
        tv.setText("Your first item value"); // set text
        lv.addHeaderView(hvw); // add header view
Другие вопросы по тегам