我Viewholder在我的RecyclerView适配器中使用了一个,我正在动态创建ImageViews.但是,当我向下滚动并向上滚动时,新图像会显示在之前的图像之上.我知道这是回收的概念,但我如何重置/清除Viewholder/布局,以便旧的ImageViews不会出现在每个回收的视图上?
public class RallyAdapter extends RecyclerView.Adapter<RallyAdapter.ViewHolder> {
public static class ViewHolder extends RecyclerView.ViewHolder{
public TextView nameTextView;
public TextView dateTextView;
public TextView creatorTextView;
public ImageButton thumbnail;
public RelativeLayout relativeLayout;
public ViewHolder(View itemView) {
super(itemView);
relativeLayout = (RelativeLayout) itemView.findViewById(R.id.view);
nameTextView = (TextView) itemView.findViewById(R.id.name);
dateTextView = (TextView) itemView.findViewById(R.id.date);
thumbnail = (ImageButton) itemView.findViewById(R.id.imageButton);
creatorTextView = (TextView) itemView.findViewById(R.id.creator_name);
}
}
private ArrayList<Rally> mRallys;
private Context mContext;
public RallyAdapter(Context context, ArrayList<Rally> rallys) {
this.mRallys = rallys;
this.mContext = …Run Code Online (Sandbox Code Playgroud) 我正在使用回收站视图实现导航栏,通过参考网站上提供的代码:http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html
在MainActivity.java中,调用以下行.
mAdapter = new MyAdapter(TITLES,ICONS,NAME,EMAIL,PROFILE);
mRecyclerView.setAdapter(mAdapter);
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
Run Code Online (Sandbox Code Playgroud)
我想知道在MyAdapter.java中以什么顺序调用哪些函数?这是MyAdapter.java的代码
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private static final int TYPE_HEADER = 0; // Declaring Variable to Understand which View is being worked on
// IF the view under inflation and population is header or Item
private static final int TYPE_ITEM = 1;
private String mNavTitles[]; // String Array to store the …Run Code Online (Sandbox Code Playgroud) 我正在展示日常活动.事件/日数是可变的.RecView中的每个项目都是一个日期,其中应包含与事件数量一样多的视图.
这是一个项目的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/llDay">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvDay"
android:text="TODAY"
android:layout_gravity="center_horizontal"
android:layout_marginTop="15dp"
android:textSize="25sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvNothing"
android:text="No events"
android:layout_gravity="center_horizontal"
android:layout_marginTop="10dp"
android:textSize="18sp"
android:textStyle="italic"
android:visibility="gone"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想动态地向llDay添加视图.这是我的适配器:
public class DiaryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
ArrayList<ArrayList<Displayable>> diaryEvents = new ArrayList<>();
Context context;
public DiaryAdapter(ArrayList<ArrayList<Displayable>> diaryEvents, Context context) {
this.diaryEvents = diaryEvents;
this.context = context;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewGroup viewGroup = (ViewGroup) LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_day_diary, parent, false);
DiaryDayViewHolder viewHolder = new DiaryDayViewHolder(viewGroup);
return …Run Code Online (Sandbox Code Playgroud) android android-custom-view recycler-adapter android-recyclerview
问题是基于真实场景,我简化了用例:
假设我们有一个带有0到999之间值的微调器和循环视图.另外,对于常规的回收者滑动选项,用户也可以从微调器中选择一个数字,并且回收器将滚动到索引.
问题:当当前页面和新的微调器值之间的差值很大时,滚动视图需要花费大量时间(例如,我们在位置0,现在用户从微调器400中选择).
下面是代码(项目布局仅包含textview):
public class MainActivity extends AppCompatActivity {
RecyclerView recyclerView;
Spinner spinner;
List<Integer> items = new ArrayList<>();
ItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// init "database"
for (int i = 0; i < 1000; i++)
items.add(i);
// Spinner
spinner = (Spinner) findViewById(R.id.spinner);
final ArrayAdapter<Integer> spinnerAdapter = new ArrayAdapter<Integer>(this, R.layout.support_simple_spinner_dropdown_item, items);
spinner.setAdapter(spinnerAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
recyclerView.smoothScrollToPosition(i);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) …Run Code Online (Sandbox Code Playgroud) android android-animation recycler-adapter android-recyclerview
我正在尝试实现RecyclerView,显示来自JSONArray的数据.解析工作完美,但RecyclerView在每个项目中显示必须仅在最后一项中的信息.屏幕截图清楚地表明了这一点.
这是我的代码:
MainActivity.java
public class MainActivity extends AppCompatActivity {
RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
protected void onCreate(Bundle savedInstanceState) {
setTheme(R.style.AppTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
new parseTask().execute();
}
private class parseTask extends AsyncTask<Void, Void, String> {
HttpURLConnection urlConnection = null;
BufferedReader reader = null;
String resultJson = "";
ProgressDialog pdLoading = new ProgressDialog(MainActivity.this, R.style.MyDialogStyle);
@Override
protected void onPreExecute() {
super.onPreExecute();
pdLoading.setMessage("\tLoading...");
pdLoading.setCancelable(false);
pdLoading.show();
}
@Override
protected String doInBackground(Void... params) {
try {
URL url = new URL("http://songo.eu.pn/db_GetFromSongs.php");
urlConnection = …Run Code Online (Sandbox Code Playgroud) 我有一个RecycleView地方,我对细胞有三种不同的看法。RView首次加载时,数据可以完美显示。当我开始滚动时,它会更改视图颜色。尝试了不同的方法,但无法解决。
原始观点。
错误的看法
public class TimelineRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private static final int DATE_LAYOUT = 1;
private static final int EVEN_LAYOUT = 2;
private static final int ODD_LAYOUT = 3;
private List<TimeLineResponseDO.content> contents = new ArrayList<>();
Context context;
LayoutInflater layoutInflater;
private boolean isVisible = false;
private ConnectionDetector connectionDetector;
private ProgressDialog progressDialog;
private Fragment fragment1;
DateFormat inputFormat;
DateFormat outputFormat;
int counterOnCreate = 0;
int counterOnBind = 0;
public interface OpenSubmissionDetails{
void openSubmissionDetails(String submissionId);
}
public interface …Run Code Online (Sandbox Code Playgroud) android recycler-adapter android-recyclerview recyclerview-layout
我使用的是我的音频列表,Recyclview并且工作正常,这意味着我可以播放音频文件Recyclview。
当我在Seekbar音频文件上使用时Recyclview,问题是当我滚动时Recyclview,另一个items's of Recyclview Seekbar正在变化(Seekbar我正在使用音频文件的播放进度。)
当我滚动时,我想要的其他Seekbar项目Recyclview不会改变Recyclview
请检查我的代码吧,里面的onBindViewHolder我Recyclview,我使用下面的代码,请一次检查。
((MyAudioChat) holder).sbMyAudio.setTag(position);
((MyAudioChat) holder).imgPlayAudio.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
((MyAudioChat) holder).sbMyAudio.removeCallbacks(null);
((MyAudioChat) holder).sbMyAudio.setProgress(0);
if (mediaPlayer == null) {
mediaPlayer();
((MyAudioChat) holder).sbMyAudio.setMax(mediaPlayer.getDuration());
} else {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer();
((MyAudioChat) holder).sbMyAudio.setMax(mediaPlayer.getDuration());
}
((MyAudioChat) holder).sbMyAudio.getTag();
((MyAudioChat) holder).sbMyAudio.setMax(mediaPlayer.getDuration()); // Set the Maximum range of the
((MyAudioChat) holder).sbMyAudio.setProgress(mediaPlayer.getCurrentPosition());// set current progress to song's
Runnable …Run Code Online (Sandbox Code Playgroud) android android-mediaplayer android-seekbar recycler-adapter
我正在使用回收站视图。这是适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Contact> myContacts;
private Activity activity;
public MyAdapter(List<Contact> contacts,Activity activity)
{
this.myContacts = contacts;
this.activity = activity;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ImageView mColorView;
public LinearLayout linearLayout;
public ViewHolder(View v,MyAdapter adapter) {
super(v);
mTextView = v.findViewById(R.id.name);
mColorView = v.findViewById(R.id.image);
linearLayout = v.findViewById(R.id.listItemLinearLayout);
v.setOnLongClickListener(onLongClickListener(myContacts.get(getAdapterPosition()).getID(),getAdapterPosition(),adapter));
}
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
// create a new view
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.my_text_view, parent, false);
// set …Run Code Online (Sandbox Code Playgroud) android indexoutofboundsexception recycler-adapter android-recyclerview
我正在实现一个显示相似结果的搜索结果页面。我有一个Hash-Maps的数组列表(具有50个地图,其中每个地图都有12个值)。我想在结果页面的卡片视图中显示每个地图。我尝试为此使用回收站视图。但无法解决这个问题。我已经遍历了堆栈溢出中的所有线程,但找不到任何东西。
ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String,String>>();
nodes = docc.getElementsByTagName("Table");
int k = nodes.getLength();
for (int i = 0; i < k; i++) {
Element e = (Element) nodes.item(i);
HashMap<String, String> map = new HashMap<String, String>();
patid = getValue(e, "iPat_id");
patname = getValue(e, "cPat_Name");
patAge = getValue(e, "iAge");
cMaritalSt = getValue(e, "cMarital_St");
OpRegNo = getValue(e, "iReg_No");
Doc_Id = getValue(e, "iDoc_id");
Dept_Id = getValue(e, "iDept_id");
DocName = getValue(e, "cDocName");
PatAddress = getValue(e, "PatAddress");
mobileno = getValue(e, "cMobile");
patdob = …Run Code Online (Sandbox Code Playgroud) android arraylist hashmap recycler-adapter android-recyclerview
您好我正在尝试使用以下代码在特定位置获取recyclerview Viewholder:
val viewHolder = educationRv.findViewHolderForAdapterPosition(i) as SectionsRecyclerAdapter.ViewHolder
Run Code Online (Sandbox Code Playgroud)
问题是,回收站视图回收了不可见的物品,如果不可见,我将无法获得物品和位置0。我在询问是否尝试过此解决方案之前进行了搜索,但是无法阻止视图的回收(我知道这不是很好的解决方案,但是我被卡住了,无法更好地解决问题):
educationRv.recycledViewPool.setMaxRecycledViews(1,0)
override fun getItemViewType(position: Int): Int {
return 1
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
if (holder != null) {
holder.setIsRecyclable(false)
}
Run Code Online (Sandbox Code Playgroud)
通用->我有带有20个可动态添加的edittexts的recyclerview,当用户单击“保存”时,我需要获取所有edittexts值并将其保存到数组,单击按钮“ Save”时出现问题,当我尝试时仅可见两个或三个视图变得不可见返回null