Tag: android recyclerview

找到重复的蓝牙设备。 我在这里双倍浸泡? 也能够更新recyclerview

我试图建立一个Android应用程序,扫描蓝牙设备,并将其添加到recyclerview。 当我试图清除我的arraylist并添加新的数据,在适配器我结束了一个空的arraylist。 当我不清除列表我结束了包含每个设备两次这样的列表: [**:71:9F:B6:59:**, **:71:9F:B6:59:**]在logcat中。 我也认为我在这里与我的notifydatasetchanged调用这里做错了什么,因为什么都不显示在我的recyclerview。 我敢肯定,这是简单的,我失踪,但我不能看到它。 我发布我的主要活动的代码,也是我的recyclerview.adapter,希望有人能指出我的问题。 提前致谢。 这是我的主要活动: public class ToofActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { private static final String TAG = "ToofActivity"; private static final int REQUEST_COARSE_LOCATION = 222; private static BluetoothAdapter btAdapter; private TextView mStatusLabel; private Switch mStatusSwitch; private ProgressBar mProgressBar; private RecyclerView mDeviceRecylcer; private static ArrayList<BluetoothDevice> mDevices = new ArrayList<>(); […]

RecyclerView没有在背面填充

我有一个活动与2片段(让我们称之为A和B),每个片段有一个回收站的观点。 我通过做添加片段 val fragment = supportFragmentManager.findFragmentById(R.id.activity_home_fragment) this.supportFragmentManager .beginTransaction() .remove(fragment) .add(R.id.activity_home_fragment, newFragment) .addToBackStack(null) .commit() 当我做正向流动(A – > B)时,所有recyclerviews正常加载。 但是,当我回到第一个片段(B – > A)时,使用后退按钮,回收站视图不会加载。 我正在使用kotterknife来注入我的观点 val recyclerBuildList by bindView<RecyclerView>(R.id.fragment_build_list_recycler) 以下是我用来创建适配器的代码: override fun onResume() { super.onResume() val build1 = Build() build1.id = 3 build1.name = "Build 1" val build2 = Build() build2.id = 4 build2.name = "Build 2" val […]

使用多个RecyclerView和其他视图保存/恢复NestedScrollView的状态

更新:这种方法的工作原理,只有保存没有工作,所以我选择了另一种方式来保存这个数组。 在我的布局中,我有一个NestedScrollView和一个LinearLayout,其中包含多个RecyclerViews和其他视图。 布局是在一个片段。 我尝试按照以下方式保存和恢复滚动状态(这是Kotlin,所以不要关于语法): fun NestedScrollView.savePosition(bundle: Bundle?) { bundle?.putIntArray("SCROLL_VIEW_POSITION", intArrayOf(scrollX, scrollY)) } fun NestedScrollView.restorePosition(bundle: Bundle?) { bundle?.getIntArray("SCROLL_VIEW_POSITION")?.let { post { scrollTo(it[0], it[1]) } } } 我在onSaveInstanceState调用第一个函数,在所有RecyclerViews加载其内容之后调用第二个函数。 但它不工作… 有任何想法吗?

ScrollAwareFABBehavior防止在回收站查看overscroll边缘效应

我正在使用FAB隐藏和显示取决于用户是否向上或向下滚动的自定义行为。 这里是代码: class ScrollAwareFABBehavior(context: Context, attrs: AttributeSet) : FloatingActionButton.Behavior(context, attrs) { var hidden = false var animatingOut = false var animatingIn = false override fun onStartNestedScroll(coordinatorLayout: CoordinatorLayout, child: FloatingActionButton, directTargetChild: View?, target: View?, nestedScrollAxes: Int): Boolean { // Ensure we react to vertical scrolling return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL } override fun onNestedScroll(coordinatorLayout: CoordinatorLayout, child: FloatingActionButton, […]

使用Fresco在RecyclerView中闪烁的Gif

我使用Fresco在Recyclerview中加载gif。 这是我的kotlin代码: fun loadResizeImage(uri: Uri, view: SimpleDraweeView, width: Int, height: Int) { val request = ImageRequestBuilder.newBuilderWithSource(uri) .setResizeOptions(ResizeOptions(width, height)).build() val controller = Fresco.newDraweeControllerBuilder() .setOldController(view.controller) .setImageRequest(request) .build() view.controller = controller 我不玩GIF,我只是把它作为一个静态的图像加载。 但是当我调用notifydatasetchanged ,gif notifydatasetchanged了一下。 我已经设置supportsChangeAnimations为false,只有GIF闪烁。 任何人都可以帮我吗?

实例删除RecyclerView中的两个项目,最后一个项目出现重复

我有一个函数,删除我的RecyclerView (写在Kotlin)包含1,2,3,4,5,6,7,8的两行。 我希望保持1,4,5,6,7,8 fun remItemFromList() { itemList.remove(1) notifyItemRemoved(1) itemList.remove(1) notifyItemRemoved(1) } 在执行该功能后,最后一个项目(即双8)出现,如下面的GIF所示。 为什么,以及如何解决这个问题?

如何在回收视图中为自定义ViewHolder实现OnClickListener?

我正在创建一个应用程序,应该显示在recyclerview中的蓝牙设备,我希望用户能够点击项目执行操作。 现在我只是试图让吐司出现在点击后,但我想可能会显示一个对话框给对选择等,但我明显缺少的东西在我onclicklistener的用法。 我试图让我的ViewHolder类: DeviceHolder实现View.OnClickListener ,并将调用Toast.makeText()内我的onClick覆盖。 然而,没有任何事情发生。 我相信我只是失去了一些小事,并会感谢帮助找到问题。 另外,我正在做的这kotlin,我是新来的,如果有可能更有效,kotlin类型的方式做到这一点,也将有所帮助。 我在下面张贴我的代码。 提前致谢。 class DeviceAdapter(val mContext : Context) : RecyclerView.Adapter<DeviceAdapter.DeviceHolder>(){ val mDevices = ArrayList<BluetoothDevice>() interface OnClickListener{ fun onClick(v: View) } fun updateItems(list: ArrayList<BluetoothDevice>){ mDevices.clear() mDevices.addAll(list) Log.d(TAG, "updating items : $mDevices") notifyDataSetChanged() } fun ViewGroup.inflate(@LayoutRes res: Int, attachToRoot: Boolean = false): View{ return LayoutInflater.from(mContext).inflate(res, this, attachToRoot) } override fun […]

RecyclerView.ViewHolder绑定不正确

我正在建设一个使用java和kotlin的android应用程序。 我对kotlin很新,而且我的适配器有问题。 出于某种原因,它似乎并没有适配器ViewHolder绑定正确。 我不知道该怎么办,因为我没有收到任何错误信息,而且在调试时遇到了麻烦。 这里是我的适配器的代码: data class NetworkTest(val addr: String, val port: String, val results: String, val protocol: String) public class NetTestRecyclerAdapter(val netList: List<NetworkTest>, val context: Context): RecyclerView.Adapter<NetTestRecyclerAdapter.NetTestRecyclerHolder>(){ override fun onBindViewHolder(holder: NetTestRecyclerHolder, position: Int) { holder.bindItems(netList[position]) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NetTestRecyclerHolder { val v: View = LayoutInflater.from(context).inflate(R.layout.tested_list_item, parent, false) return NetTestRecyclerHolder(v) } […]

如何使用Kotlin重新调用活动中的回收站视图的内容

我想要做什么:当用户在edittext中输入某个东西,调用一个API并在回收站中显示响应。 在OnCreate() usersData= ArrayList() resultRecyclerView.setHasFixedSize(true) resultRecyclerView.layoutManager=LinearLayoutManager( this@MainActivity,LinearLayoutManager.VERTICAL,false) itemsAdapter=adapter(this@MainActivity,usersData) resultRecyclerView.adapter=itemsAdapter 在OnResume() searchText.addTextChangedListener(object : TextWatcher { override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { //…. } override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { //……. } override fun afterTextChanged(s: Editable) { Log.v("Text is ",s.toString()) val url="https://api.github.com/search/users?q="+s.toString().trim()+"+sort:followers" fetchData(url) } }) 取数据的方法 private […]

第一次尝试刷新的SwipeRefreshLayout动画无休止地运行

作为一个事实,我知道这不是Kotlin特有的事情。 我也遇到了Java同样的错误。 我试图把SwipeRefreshLayout放在FrameLayout ,没有任何作用。 我也试图把 srNewsFeedRefresh.isRefreshing = false 从下面的代码持续约2秒的任务,仍然没有效果。 我的xml: <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/srNewsFeedRefresh" android:layout_width="wrap_content" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:id="@+id/rwNewsRecyclerView" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/> 和片段代码: class NewsFeedFragment : Fragment(), NewsDelegateAdapter.onViewSelectedListener { override fun onItemSelected(url: String?) { Toast.makeText(context, "Love", Toast.LENGTH_SHORT).show() } private var mListener: OnFragmentInteractionListener? = null override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? { return LayoutInflater .from(context) […]