如果您使用的是数组适配器,则可以在适配器中使用项目位置覆盖getView方法设置计数器文本:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//necessary code for inflating list items
//as index position starts from 0, set position+1 in textview
tvCounter.setText(Integer.parseInt(position+1));
return convertView;
}
如果您使用的是RecyclerView Adapter,则可以在适配器中使用项目位置覆盖onBindViewHolder方法设置计数器文本:
@Override
public void onBindViewHolder(ItemViewHolder holder, int position) {
//other parts
//as index position starts from 0, set position+1 in textview
holder.tvCounter.setText(Integer.toString(position+1));
}
findFirstVisibleItemPosition()
将在滚动顶部/底部时返回可见项目位置。
LinearLayoutManager myLayoutManager = myRecyclerView.getLayoutManager();
int scrollPosition = myLayoutManager.findFirstVisibleItemPosition();
了解更多关于read this.的信息
在您的activity / fragment中创建BroadcastReceiver。
private BroadcastReceiver counterChangeReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//set text by getting value from intent extras
}
};
并将其注册在activity / fragment onResume()中
LocalBroadcastManager.getInstance(context).registerReceiver(counterChangeReceiver , new IntentFilter("COUNTER_CHANGE"));
从onBindViewHolder()发送广播这样的东西
Intent intent = new Intent("COUNTER_CHANGE");
intent.putExtra("value",(position+1));
LocalBroadcastManager.getInstance(MyApplication.getInstance().getBaseContext()).sendBroadcast(intent);