我正在使用兼容性库中的ViewPager.我已经巧妙地让它显示了几个我可以翻阅的视图.
但是,我很难弄清楚如何使用一组新视图更新ViewPager.
我已经试过各种事情就像调用mAdapter.notifyDataSetChanged(),mViewPager.invalidate()即使每次都创建我想用一个新的数据列表中的一个全新的适配器.
没有任何帮助,文本视图与原始数据保持不变.
更新: 我做了一个小测试项目,我几乎能够更新视图.我将粘贴下面的课程.
然而,似乎没有更新的是第二个视图,"B"仍然存在,按下更新按钮后应显示"Y".
public class ViewPagerBugActivity extends Activity {
private ViewPager myViewPager;
private List<String> data;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
data = new ArrayList<String>();
data.add("A");
data.add("B");
data.add("C");
myViewPager = (ViewPager) findViewById(R.id.my_view_pager);
myViewPager.setAdapter(new MyViewPagerAdapter(this, data));
Button updateButton = (Button) findViewById(R.id.update_button);
updateButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
updateViewPager();
}
});
}
private void updateViewPager() {
data.clear();
data.add("X");
data.add("Y");
data.add("Z");
myViewPager.getAdapter().notifyDataSetChanged();
}
private class MyViewPagerAdapter extends PagerAdapter {
private …Run Code Online (Sandbox Code Playgroud) 我正在使用本地广播让我的服务知道AsyncTask已完成其工作但我有一个小问题:广播只发送一次(它是由一个仅在应用程序启动时调用的函数创建的)但我收到两次.
简化代码:
@Override
protected void onPostExecute(HttpResponse result) {
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getBaseContext());
localBroadcastManager.sendBroadcast(new Intent(getString(R.string.bc_CONNECTED)));
}
Run Code Online (Sandbox Code Playgroud)
在服务中:
private BroadcastReceiver connectedBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(getString(R.string.app_tag), "broadcast received !!");
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
LocalBroadcastManager.getInstance(this).registerReceiver(connectedBroadcastReceiver, new IntentFilter(getString(R.string.bc_CONNECTED)));
return START_STICKY;
}
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这种奇怪的行为呢?
我们总是听说过使用一个活动的多个片段.可能相反吗?我很好奇.我们可以为多个活动使用相同的片段.请举一个例子.
我有一个采用 MVVM 结构的应用程序。我在同一个活动中有不同的片段。每个片段都有自己的 ViewModel,所有数据均从 REST API 检索。
在FragmentA中,有一个RecyclerView列出了X个类实例。我想在 RecyclerView 上设置 OnClickListener,并且当在 RecyclerView 中单击某个项目时,我想将相关的 X 对象传递给 FragmentB。我怎样才能实现这个目标?
在我的应用程序中,我在一个活动中有两个片段。在其中一个片段中,我有数据,例如:
String name = "Transporter";
Run Code Online (Sandbox Code Playgroud)
我想将此名称发送到容器活动。我该怎么做?请帮我。