【问题标题】:index list view with database cardview带有数据库卡片视图的索引列表视图
【发布时间】:2018-11-14 07:08:14
【问题描述】:

我知道有很多重复的此类问题,但请阅读我的并帮助我。

我对 Android 开发非常陌生,因此我根据自己的直觉和有限的指南编写了这些代码。

我想实现一个可索引 (A-Z) 侧面板,就像在联系人中一样。所有可用的帖子都是带有硬编码条目的数组字符串,但我的不是,我正在使用 DB Browser for 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<>();

创建时

//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()));

}

错误是:

如果您需要更多代码,请告诉我,我会更新这篇文章。提前谢谢你。

【问题讨论】:

    标签: java android arraylist android-arrayadapter db-browser-sqlite


    【解决方案1】:

    follow this lib for indexing list 无需编写额外函数 this lib 管理所有情况

    【讨论】:

      【解决方案2】:

      回答您遇到的错误:

      1. 您正在呼叫dbList.setAdapter()dbList 不是ListViewRecyclerView 在适当的ListViewRecyclerView 变量上调用 setAdapter() 方法。

      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[]

      【讨论】:

        猜你喜欢
        • 2012-05-10
        • 1970-01-01
        • 2017-11-18
        • 1970-01-01
        • 1970-01-01
        • 2013-02-25
        • 1970-01-01
        • 1970-01-01
        • 2021-01-05
        相关资源
        最近更新 更多