просмотр списка индексов с картой базы данных - PullRequest
0 голосов
/ 14 ноября 2018

Я знаю, что есть много дубликатов с подобными проблемами, но просьбы читают мои и помогают мне.

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

Я хотел бы реализовать индексируемую (AZ) боковую панель, как в контактах.Все доступные сообщения являются строками массива с жестко запрограммированными записями, но мои нет, я использую DB Browser для SQLite, а затем заполняю все данные в просмотре карты.

Я ссылался (https://github.com/woozzu/IndexableListView/blob/master/src/com/woozzu/android/widget/IndexableListView.java) и перепробовал все упомянутые решения, связанные с этим постом, но безрезультатно. Я считаю, что я просто неправильно его кодировал, поскольку записи жестко закодированы, а мои нет.

В настоящее время я следую этому руководству, (http://androidopentutorials.com/android-listview-with-alphabetical-side-index/) и исправили некоторые коды здесь и там, которые, по моему мнению, необходимы для моей ситуации, такие как добавление моей базы данных в массив. Однако, есть несколько ошибок, и я не знаю, что делать.

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

Вот что я пробовал:

Декларация

//indexable list view
Map<String, Integer> mapIndex;
List<String> dbList = new ArrayList<>();

OnCreate

//indexable list view
String[] dbList= database.getKeyword();
Arrays.asList(dbList);
dbList.setAdapter(new ArrayAdapter<String>(this, 
android.R.layout.simple_expandable_list_item_1, dbList));
etIndexList(dbList);
displayIndex();

//indexable list view
private void getIndexList(String[] dbList){

mapIndex = new LinkedHashMap<String, Integer>();
for(int i = 0; i < dbList.length; i++){
String db = dbList[i];
String index = db.substring(0,1);

if(mapIndex.get(index) == null)
mapIndex.put(index, i);

    }
}

    private void displayIndex(){
    LinearLayout indexLayout = (LinearLayout) findViewById(R.id.side_index);

    TextView textView;
    List<String> dbList = new ArrayList<String>(mapIndex.keySet());
    for (String index : dbList){
        textView = (TextView) getLayoutInflater().inflate(R.layout.side_index_item, null);
        textView.setText(index);
        textView.setOnClickListener(this);
        indexLayout.addView(textView);
    }
}

public void onClick(View view){
    TextView selectedIndex = (TextView) view;
    dbList.setSelection(mapIndex.get(selectedIndex.getText()));

}

Ошибки:

Error 1

Error 2

Error 3

Error 4

Если вам потребуется больше кодов, сообщите мне, и я обновлю этот пост.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Ответьте на ошибки, которые вы получаете:

  1. Вы звоните dbList.setAdapter(): dbList не является ListView или RecyclerView Вызовите метод setAdapter () длясоответствующая ListView или RecyclerView переменная.

  2. Вы передаете this методу setOnClickListener(): this указывает на ваш KnowledgeActivity, а не View.OnClickListener,Решение: либо внедрите View.OnClickListener в своей деятельности, либо наберите новый OnClickListener, например,

    textView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
    }});
    
  3. database.keyword() вернет List, и вы пытаетесь привести его к String[]

0 голосов
/ 14 ноября 2018

следуйте этому lib для индексации списка, нет необходимости писать дополнительную функцию, это lib управляет всем делом

...