Articles of 适配器

如何在recyclerview viewholder中处理很多不同的视图types

如果我有50种观点呢? 我的适配器中应该有50个静态内部类吗? 根据这个答案 ,是的。 我的第一个想法是把每个视图的内部类转换成一个单独的公共类,但是它们必须是静态的。 那么把每个封装成一个公共类,使内部类是静态的? 有没有更好的select? 编辑:代码示例:所以这将是一个很好的解决scheme? 这不也杀死性能? public class MainViewHolder extends DragSortAdapter.ViewHolder implements View.OnClickListener, View.OnLongClickListener { View container; TextView title; //called in onCreateViewHolder in adapter public MainViewHolder(DragSortAdapter adapter, View itemView) { super(adapter, itemView); container = itemView.findViewById(R.id.card_root); title = container.findViewById(R.id.text); } //called by onBindViewHolder in adapter public void setData(Data data) { title.setText(data.title); } } […]

Android:使用onClick在ListView Row中更改button背景

我的行包含一个button,在适配器的getView中设置了自己的单击监听器。 我能够区分我的button点击和实际的行项目点击使用android:descendantFocusability =“blocksDescendants”在行的父项。 当我点击一个button,它正确设置button的背景,我的问题是当我滚动列表中设置它为不同的行。 我认为他们有一个问题的地方回收的意见。 这是我的代码: @Override public View getView(int position, View convertView, ViewGroup parent){ if(convertView == null){ holder = new ViewHolder(); convertView = inflater.inflate(R.layout.todays_sales_favorite_row, null); holder.favCatBtn = (Button)convertView.findViewById(R.id.favCatBtn); convertView.setTag(holder); } else { holder = (ViewHolder)convertView.getTag(); } holder.favCatBtn.setTag(position); holder.favCatBtn.setOnClickListener(this); return convertView; } @Override public void onClick(View v) { int pos = (Integer) v.getTag(); Log.d(TAG, "Button […]

在底部工作表中更新recyclerview内容失败

我想通过点击事件来改变底部视图中的列表内容,但是我只有空白表单。 这里是一个从BottomSheetSample(github.com/niravkalola/BottomSheetSample)修改的演示。 mainActivity.java package com.nkdroid.bottomsheetsample; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.BottomSheetDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import java.util.ArrayList; import java.util.List; import java.util.Random; public class MainActivity extends AppCompatActivity implements ItemAdapter.ItemListener { private Button btnView, btnDialog; BottomSheetBehavior behavior; private BottomSheetDialog mBottomSheetDialog; private ItemAdapter mAdapter; RecyclerView recyclerView; @Override protected […]

与AdapterView和addView的麻烦

我想要下面的类来显示一些textviews / buttons / spinners,还有一个包含parsing数据的ListView。 但是,列表视图/适配器/ addview正在造成一些麻烦。 下面是我得到的错误: java.lang.UnsupportedOperationException:在AdapterView中不支持addView(View,LayoutParams) 我感觉它与我的XML文件,但林不太确定。 这是我的代码: public class StatisticsScreen extends ListActivity{ private List<Message> messages; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.statisticsscreen); loadFeed(); //other textviews and listeners added } private void loadFeed() { try{ BaseFeedParser parser = new BaseFeedParser(); messages = parser.parse(); List<String> titles = new ArrayList<String>(messages.size()); for (Message msg […]

在Android的列表视图内设置OnClick Listenerbutton

我在我的屏幕上有一个列表视图,每个列表项目包含2个文本视图和一个button。 在button单击我想要采取列表项select索引从vector中获取一些数据。 这是我的列表自定义适配器,但我不知道如何做到这一点。 private class CustomAdapter extends ArrayAdapter<ServicesItems> { public CustomAdapter(Context context, int resource, int textViewResourceId, List<ServicesItems> objects) { super(context, resource, textViewResourceId, objects); } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; TextView item = null; TextView description = null; Button subNowBtn; ServicesItems ii = getItem(position); if (null == […]

RecyclerView多个布局视图在一个适配器类中

这是我所取得的成就? 3个不同的部分 ,每个部分10个不同的项目 。 这里是我下面的教程 链接 ,下面是屏幕截图 : 试图为每个部分显示different Views 。 喜欢: 对于第1部分 (layout_1.xml) 对于第2部分 (layout_2.xml) 对于第3节 (layout_3.xml) 但是在每个Section中 显示 layout_1.xml布局视图 …(第1,2,3节) 我可以知道我在代码中的错误,我错过了什么? public class SectionListDataAdapter extends RecyclerView.Adapter<SectionListDataAdapter.SingleItemRowHolder> { private ArrayList<SingleItemModel> itemsList; private Context mContext; public SectionListDataAdapter(Context context, ArrayList<SingleItemModel> itemsList) { this.itemsList = itemsList; this.mContext = context; } @Override public SingleItemRowHolder onCreateViewHolder(ViewGroup viewGroup, int i) […]

列出具有交替颜色的项目

我有一个列表视图和一个适配器,将交替的背景颜色设置为列表项(“斑马”列表样式): public View getView(final int position, View convertView, ViewGroup parent) { int colorPos = position % colors.length; … convertView.setBackgroundColor(colors[colorPos]); return convertView; } 但现在,当我使用滚轮select一个项目,或者当我点击一个项目,select/点击的原始颜色不会覆盖我的自定义背景(我可以看到原来的颜色下面我设置)。 我如何设置这些状态的原始颜色?

当调用setAdapter时,ViewPager并不总是刷新,FragmentStatePagerAdapter

首先,我使用FragmentStatePagerAdapter来提供一个ViewPager的片段来显示。 当应用程序处于运行状态(即在onResume() )时,在ViewPager上调用setAdapter将始终工作,并使ViewPager刷新,调用适配器中的getItem(int position)方法。 然而,在方向改变之后,如果我在我的活动的onCreate(Bundle savedInstance)方法中调用了setAdapter,则不调用getItem(int position)方法,并重用旧的片段。 我在想也许FragmentManager正在做一些我不明白的事情? 片段pipe理器是唯一不会在方向更改期间被破坏的东西。 谢谢

使用Cursor和ListView适配器来处理大量的数据

我正在使用自定义CursorAdapter从SQLite数据库中获取数据,并显示在一个列表视图。 数据库包含大约8000行的2列。 所以我正在寻找一种方法来查询和显示所有的数据尽可能快。 我已经做了这个与asyncTask这里是代码: private class PrepareAdapter extends AsyncTask<Void,Void,CustomCursorAdapter > { @Override protected void onPreExecute() { dialog.setMessage("Wait"); dialog.setIndeterminate(true); dialog.setCancelable(false); dialog.show(); Log.e("TAG","Posle nov mAdapter"); } @Override protected CustomCursorAdapter doInBackground(Void… unused) { Cursor cursor = myDbNamesHelper.getCursorQueryWithAllTheData(); mAdapter.changeCursor(cursor); startManagingCursor(cursor); Log.e("TIME","posle start managing Cursor" + String.valueOf(SystemClock.elapsedRealtime()-testTime)+ " ms"); testTime=SystemClock.elapsedRealtime(); mAdapter.initIndexer(cursor); return mAdapter; } protected void onPostExecute(CustomCursorAdapter result) { TabFirstView.this.getListView().setAdapter(result); […]

如何从适配器调用ListFragment中定义的方法?

我有一个ListFragment和一个自定义适配器。 从适配器,我从行中定义的button中获取onClick事件。 在onClick方法中,我得到一些id,我想传递给ListFragment做一些事情。 我怎样才能从适配器的ListFragment调用方法showTask? listfragment public class TaskListFragment extends ListFragment{ /* … */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mAdapter = new TaskListAdapter(getActivity(), data); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setListAdapter(mAdapter); } public void showTask(long id) { FragmentTransaction ft = getFragmentManager().beginTransaction(); TaskFragment taskFragment = new TaskFragment(); Bundle args = new Bundle(); args.putLong("id", […]