如何从RecyclerView外部更改RecyclerView highlighed选项?

时间:2017-06-13 08:42:17

标签: android android-recyclerview

我制作了水平的RecyclerView来显示图像,通过触摸图像选择不同的动作。我还通过使用background drawable突出显示了当前的活动选择,并在onBindViewHolder上设置了它。

String sql = "EXEC Web.example_procedure 2, 3, 4";
PreparedStatement stmt = con.prepareStatement(sql);

boolean result = stmt.execute();

while (true) {
    if (result) {
        ResultSet rs = stmt.getResultSet();

        // in my case first table has only one column, 
        // and I need the second table, which has 9 columns
        if (rs.getMetaData().getColumnCount() > 1) {

            // go through the rows
            while (rs.next()) {

                // for example what we can do
                rs.getMetaData().getColumnCount(); // return column count in the current result set
                rs.getObject(int columnIndex); // get value for column index. Must be not greater than .getColumnCount()
            }
        }

    } else {
        int updateCount = stmt.getUpdateCount();
        if (updateCount == -1) {
            // no more results
            break;
        }
    }
    result = stmt.getMoreResults();
}

然后我有一个不属于RecyclerView的按钮,所以你也可以通过按下它将Recyclerview中的选择滚动到下一个。 它的工作正常,但突出显示按下按钮时不会改变。 我可以测试当选择当前选择的项目时,我会打开我的指令活动,否则将打开不同的活动。

那么当按下按钮时,我如何能够突出显示当前所选项目?

更新1。

我在myButtonOnClick

下的活动中
   public void onBindViewHolder(final MyViewHolder holder, final int position) {

        holder.itemView.setSelected(selectedPos == position);
        holder.imageView.setImageResource(horizontalList.get(position).imageId); 

并没有多大作用。

更新2。

发现问题出现在我的onBindViewHolder上,因为我声明了不同的变量,这搞乱了。 所以horizo​​ntalAdapter.notifyItemChanged(selectedItem);工作得很好,我的 onBindViewHolder现在我有holder.itemView.setSelected(selectedItem == position); 所以从按钮和recyclerview操纵相同的变量来使事情正确。

1 个答案:

答案 0 :(得分:0)

您可以将OnScrollListener添加到RecyclerView,以观察滚动状态和位置的任何变化。

参考this

如果没有帮助,您可以将代码粘贴到button.OnClickListener内以供进一步讨论。