标签: android-adapter

作为ViewPager的一部分更新ListFragment中的数据

我正在使用Android中的v4兼容性ViewPager.我的FragmentActivity有一堆数据,可以在我的ViewPager中的不同页面上以不同的方式显示.到目前为止,我只有3个相同的ListFragment实例,但将来我将有3个不同的ListFragments实例.ViewPager位于垂直电话屏幕上,列表不是并排的.

现在,ListFragment上的一个按钮启动一个单独的整页活动(通过FragmentActivity),它返回并且FragmentActivity修改数据,保存数据,然后尝试更新其ViewPager中的所有视图.就在这里,我被卡住了.

public class ProgressMainActivity extends FragmentActivity
{
    MyAdapter mAdapter;
    ViewPager mPager;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    ...
        mAdapter = new MyAdapter(getSupportFragmentManager());

        mPager = (ViewPager) findViewById(R.id.viewpager);
        mPager.setAdapter(mAdapter);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        ...
        updateFragments();
        ...
    }
    public void updateFragments()
    {
        //Attempt 1:
        //mAdapter.notifyDataSetChanged();
        //mPager.setAdapter(mAdapter);

        //Attempt 2:
        //HomeListFragment fragment = (HomeListFragment) getSupportFragmentManager().findFragmentById(mAdapter.fragId[0]);
        //fragment.updateDisplay();
    }

    public static class MyAdapter extends FragmentPagerAdapter implements
         TitleProvider
    {
      int[] fragId = {0,0,0,0,0};
      public MyAdapter(FragmentManager fm)
      {
         super(fm);
      }
      @Override …
Run Code Online (Sandbox Code Playgroud)

android android-adapter android-fragments android-viewpager android-listfragment

141
推荐指数
5
解决办法
7万
查看次数

适配器在Android中的作用是什么?

我想知道 Android环境中何时,何地以及如何使用适配器.

来自Android开发者文档的信息对我来说不够,我想得到更详细的分析.

android adapter android-adapter

119
推荐指数
4
解决办法
9万
查看次数

如何在RecyclerView中更新/刷新特定项目

我正在尝试刷新特定项目RecyclerView.

故事:每当用户点击项目时,它都会显示AlertDialog.用户可以通过单击确定按钮键入一些文本.我想在这个项目中显示这个文本并显示不可见ImageView- 在XML和适配器中声明ViewHolder-

我在AlertDialogPositive Button中使用此函数来更新项目:

private void updateListItem(int position) {
  View view = layoutManager.findViewByPosition(position);
  ImageView medicineSelected = (ImageView) view.findViewById(R.id.medicine_selected);
  medicineSelected.setVisibility(View.VISIBLE);
  TextView orderQuantity = (TextView) view.findViewById(R.id.order_quantity);
  orderQuantity.setVisibility(View.VISIBLE);
  orderQuantity.setText(quantity + " packet added!");

  medicinesArrayAdapter.notifyItemChanged(position);
}
Run Code Online (Sandbox Code Playgroud)

但是这段代码不仅改变了传递位置的itemView,还改变了其他一些itemView(s)!

如何通过单击更改特定的itemView?

android android-adapter recycler-adapter android-recyclerview

96
推荐指数
5
解决办法
15万
查看次数

使用RecyclerView适配器更新数据的最佳方法

当我必须使用带有ListView的经典适配器时,我在ListView中更新我的数据,如下所示:

myAdapter.swapArray(data);

public swapArray(List<Data> data) {
  clear();
  addAll(data);
  notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)

我想知道RecyclerView的最佳实践是什么.因为在RecyclerView适配器,你不能做clear,并addAllListView控件.

所以我尝试了一下notifyDataSetChanged,但它没有用.然后我尝试在我的视图上使用swapAdapter:

List<Data> data = newData;

MyRecyclerAdapter adapter = new MyRecyclerAdapter(data);

// swapAdapter on my recyclerView (instead of a .setAdapter like with a classic listView).
recyclerViewList.swapAdapter(adapter, false);
Run Code Online (Sandbox Code Playgroud)

但是使用这个最后的解决方案,我仍然需要创建我的适配器的新实例,我觉得它不是最好的解决方案.我应该能够在没有新的情况下更改我的数据MyRecyclerAdapter.

android listview android-adapter android-recyclerview

73
推荐指数
4
解决办法
10万
查看次数

有没有更好的方法从适配器获取对父级RecyclerView的引用?

我有一个用例,我需要RecyclerView从适配器内部引用父,特别是在onBindViewHolder方法内.到目前为止,我正在做的是将它分配给onCreateViewHolder传递viewGroup parentarg 的方法中的私有类成员,如下所示:

private ViewGroup mParent;

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    // inflater logic.
    mParent = parent;
}
Run Code Online (Sandbox Code Playgroud)

并引用父RecyclerViewonBindViewHolder这样的:

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    // binder logic.
    ((RecyclerView)mParent).blahBlahBlah();
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?也许RecyclerView.Adapter有一种我可能错过的方式?

android android-adapter android-recyclerview

72
推荐指数
1
解决办法
2万
查看次数

android - listview按位置获取项目视图

我有自定义适配器(基本适配器)的listview.我想按位置从listview获取视图.我试过了mListView.getChildAt(position),但它没有用.如何按位置获取项目视图?

android android-listview android-adapter android-view

70
推荐指数
2
解决办法
15万
查看次数

Android ListView适配器notifyDataSetInvalidated()vs notifyDataSetChanged()

有什么不同?android文档没有notifyDataSetInvalidated()的描述.我想也许您调用该函数来通知所有已注册的侦听器,但是使用notifyDataSetChanged()来通知它们?

android android-listview android-adapter

63
推荐指数
1
解决办法
2万
查看次数

在适配器中获取android上下文

在我在互联网上找到的许多代码示例中,context都是在适配器的构造函数中获得的.

此上下文用于获取方法中inflater的视图膨胀getView.

我的问题是为什么在构造函数中获取上下文时可以轻松获得这样的上下文

        LayoutInflater inflater;
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if(inflater == null){
            Context context = parent.getContext();
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            }
            ...
            ...

            return convertView;
        }
Run Code Online (Sandbox Code Playgroud)

也有任何理由不使用上述方法,因为直到现在我还没有遇到任何使用它的问题.

android android-context android-adapter

49
推荐指数
1
解决办法
5万
查看次数

findViewById vs ListView适配器中的View Holder Pattern

我总是使用LayoutInflaterfindViewById在一个getView方法中创建新项目Adapter.

但在许多文章中,人们写的findViewById非常慢,强烈建议使用View Holder Pattern.

谁能解释为什么findViewById这么慢?为什么View Holder Pattern更快?

如果需要添加不同的项目,我该怎么办ListView?我应该为每种类型创建类吗?

static class ViewHolderItem1 {
    TextView textViewItem;
}

static class ViewHolderItem2 {
    Button btnViewItem;
}
static class ViewHolderItem3 {
    Button btnViewItem;
    ImageView imgViewItem;
}
Run Code Online (Sandbox Code Playgroud)

android listview android-adapter

49
推荐指数
2
解决办法
3万
查看次数

如何使用baseadapter自定义listview

我想创建这样的自定义ListView:

ListView中的TextView + ImageView

我想我必须使用,BaseAdapter但我不知道.

android listview android-adapter baseadapter

45
推荐指数
3
解决办法
13万
查看次数