我最近遇到了RecycleViewAndroid 5.0发布的android ,它似乎RecycleView只是一个封装的传统ListView,其中包含了ViewHolder模式,它促进了视图的重用,而不是每次都创建它.
使用的其他好处是RecycleView什么?如果两者在性能方面具有相同的效果,为什么会选择使用RecycleView`?
编辑
我发现人们提出了类似的问题并且答案没有定论,在这里添加它们以保存记录.
我们应该使用RecyclerView来取代ListView吗?
为什么RecyclerView没有onItemClickListener()?和RecyclerView如何与Listview不同?
我正在编写一个Android应用程序,其中包含带有CheckedTextView项目的ListView.这基本上是一个答案数量可变的问题.如果您选择一个答案,可以按"下一步",然后查看下一个问题.
我已经编写了所有代码来保存答案并转到下一个问题,我还为用户提供了一个"上一个"按钮以回到上一个问题.如果上一个问题已经有答案,我希望选择该答案.这就是问题开始的地方.
现在,我可以获得所选答案的位置,然后我打电话,listView.setItemChecked(pos, true)但未选中单选按钮.
if(selectedAnswer != null) {
int pos = mAnswerAdapter.getPosition(selectedAnswer);
if(pos != -1) {
listAnswers.setItemChecked(pos, true);
}
}
Run Code Online (Sandbox Code Playgroud)
只有当我执行其他操作时,例如向下拖动状态栏,视图才会刷新并绘制无线电按钮的选定状态.
我在列表中填写如下答案:
mAnswerAdapter = new AnswerArrayAdapter(getContext(), R.layout.listitem_answer, currentQuestion.getAnswers(), user.getLanguage());
listAnswers.setAdapter(mAnswerAdapter);
mAnswerAdapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
以供参考:
list_item布局:
<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/listPreferredItemHeightSmall"
android:drawableStart="@drawable/questionnaire_answer_radio"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:textColor="@android:color/white"
android:id="@+id/questionnaire_answer_checkbox"/>
Run Code Online (Sandbox Code Playgroud)
适配器:
package be.iminds.mresist;
import android.content.Context;
import android.support.annotation.NonNull;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import java.util.List;
import be.iminds.mresist.models.QuestionnaireDefinition;
import butterknife.BindView;
import butterknife.ButterKnife;
public class AnswerArrayAdapter extends ArrayAdapter<QuestionnaireDefinition.Answer> …Run Code Online (Sandbox Code Playgroud)