当前位置: 首页 > 知识库问答 >
问题:

如何在一个适配器中传递两个列表?

岳毅
2023-03-14

我试图在我的RecycerViewdAdapter类中创建cv应用程序,我想传递列表和一个模型类,我已经传递了第二个虚拟数据。我正在跟踪这个stackoverflow链接,两个ArrayList,一个RecycerView适配器

我想实现这个ui

第二张当前截图

public class EducationAdapter extends RecyclerView.Adapter<EducationAdapter.ViewHolder> {

    final int Internet_TYPE = 0;
    final int Dummy_TYPE = 1;
    public List<Education> educationList;
    public Context context;
    public List<FakeData> fakeData;
    public int[] subjectImage;
    public String[] subjectText;

    public EducationAdapter(List<Education> educationList, Context context, List<FakeData> fakeData, int[] subjectImage, String[] subjectText) {
        this.educationList = educationList;
        this.context = context;
        this.fakeData = fakeData;
        this.subjectImage = subjectImage;
        this.subjectText = subjectText;

    }

    @NonNull
    @Override
    public EducationAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        if (viewType == Internet_TYPE) {
            View itemView = LayoutInflater.from(context)
                    .inflate(R.layout.education_item, parent, false);  // change


            return new EducationAdapter.ViewHolder(itemView);
        }
        if (viewType == Dummy_TYPE) {
            return new ViewHolder.FakeViewHolder(itemView);
        }
        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull EducationAdapter.ViewHolder holder, int position) {
        if (holder instanceof ViewHolder) {
            Education education = educationList.get(position);
            holder.duration.setText(education.getDuration());
            holder.degree.setText(education.getDegree());
            holder.institution.setText(education.getInstitution());

        }
        if (holder instanceof ViewHolder.FakeViewHolder) {

        }

    }

    @Override
    public int getItemCount() {
        return educationList.size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        public TextView duration, institution, degree, educationInfo, subjects, computers_science;
        ;
        private ImageView educationImage, subjectImage, computerScience;

        public ViewHolder(View view) {
            super(view);

            duration = (TextView) view.findViewById(R.id.duration);
            institution = (TextView) view.findViewById(R.id.institution);
            degree = (TextView) view.findViewById(R.id.degree);
            educationImage = (ImageView) view.findViewById(R.id.educationImage);
            educationInfo = (TextView) view.findViewById(R.id.education_info);
            subjectImage = (ImageView) view.findViewById(R.id.subjectImage);
            subjects = (TextView) view.findViewById(R.id.subjects);


        }

        public class FakeViewHolder extends RecyclerView.ViewHolder {

            public TextView item;
            public ImageView icon;

            public FakeViewHolder(View itemView) {
                super(itemView);

                item = (TextView) itemView.findViewById(R.id.item);
                icon = (ImageView) itemView.findViewById(R.id.icon);
            }

            public void populate(FakeData fakeDatas) {
                item.setText(fakeDatas.getImage());
                icon.set
                dataSnippet.setText(imageDataWrapper.getPage_Desc());
                Picasso.with(context).load(imageDataWrapper.getPage_ImageThumb()).into(image);
            }

        }
    }
}

below my EducationItem where I have implemented network call and dummy data

public class EducationItem extends AppCompatActivity {

    private EducationAdapter educationAdapter;
    public List<Education> educationList;
    public List<FakeData> fakeData;
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
    setContentView(R.layout.education);


       final  int [] subjectImage = {R.drawable.computer_science,
                R.drawable.data_structure,

        };




        final String[] subjectText = {
                "Computer Science",
                "Data Structure",

        };

    KitabInterface kitabInterface = ApiClient.getApiService();
    Call<KitabSawti> call = kitabInterface.getEducation();

        call.enqueue(new Callback<KitabSawti>() {
        @Override
        public void onResponse(Call<KitabSawti> call, Response<KitabSawti> response) {
            educationList=  response.body().getEducation();
            RecyclerView recyclerView  =  findViewById(R.id.recyclerView);
            recyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
            educationAdapter = new EducationAdapter(educationList, EducationItem.this, fakeData, subjectImage, subjectText); // changes
            recyclerView.setAdapter(educationAdapter);
        }

        @Override
        public void onFailure(Call<KitabSawti> call, Throwable t) {

        }
    });
}
}

在educution_item下面。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorBlust"
    android:orientation="vertical">


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:baselineAligned="false"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/educationImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginStart="5dp"
            android:layout_marginLeft="5dp"
            android:src="@drawable/education_information"
            tools:ignore="ContentDescription" />

        <TextView
            android:id="@+id/education_info"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginStart="10dp"
            android:layout_marginLeft="10dp"
            android:text="@string/education_information"
            android:textColor="@color/colorWhite"
            android:textSize="20sp" />

    </LinearLayout>

    <TextView
        android:id="@+id/duration"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginStart="12dp"
        android:layout_marginLeft="12dp"
        android:text="@string/text_duration"
        android:textColor="@color/colorWhite"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/institution"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginStart="12dp"
        android:layout_marginLeft="12dp"
        android:text="@string/text_institution"
        android:textColor="@color/colorWhite"
        android:textSize="16sp" />

    <TextView
        android:id="@+id/degree"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center"
        android:layout_marginStart="12dp"
        android:layout_marginLeft="12dp"
        android:text="@string/text_degree"
        android:textColor="@color/colorWhite"
        android:textSize="16sp" />


    <Space
        android:layout_width="50dp"
        android:layout_height="50dp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/subjectImage"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginStart="20dp"
                android:layout_marginLeft="20dp"
                android:src="@drawable/university_subjects"
                tools:ignore="ContentDescription" />

            <TextView
                android:id="@+id/subjects"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_marginStart="100dp"
                android:layout_marginLeft="100dp"
                android:text="@string/university_subjects"
                android:textColor="@color/colorWhite"
                android:textSize="20sp" />

            <include
                layout="@layout/subject_list"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/subjects"
                android:layout_marginTop="60dp" />
        </RelativeLayout>


    </LinearLayout>

</LinearLayout>

subjectList下面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorBlust"
    android:orientation="horizontal" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="60dp"
        android:layout_marginLeft="10dp"
        android:layout_height="60dp"
        android:padding="5dp"
        android:layout_marginStart="10dp" />

    <LinearLayout android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/computers_science"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"
            android:padding="2dp"
            android:textColor="@color/colorWhite" />

    </LinearLayout>



</LinearLayout> 

共有1个答案

宗沛
2023-03-14

您应该在包含所有项的一个列表中联接两个列表。在一个适配器中处理两个不同的列表可能会产生许多不同的问题。

private void setAdapter() {
    List<Item> items = new ArrayList<>();
    items.add(new EducationItem());
    items.add(new FakeItem());
    recycler.setAdapter(newAdapter(items));
}

public interface Item {}

class EducationItem implements Item {
    //...fields
}

class FakeItem implements Item {
    //...fields
}
 类似资料:
  • 我有一个聊天屏幕,我可以与其他用户聊天,我发送聊天数据(消息,时间和发件人通过列表)到RecycerAdapter,用数据填充聊天视图。现在我有一个列表,其中有不同布局的数据。像这样 下面是我的方法,从这里我将第二个arraylist调用到RecycerAdapter中 与上述方法一样,当我尝试通过时,它会从屏幕上删除所有消息,并显示我的图像数据。但我想保留所有的消息,并通过新的列表显示数据图像

  • 我想在我的列表中实现部分。我有一个任务列表。列表有一个自定义适配器,它扩展了回收器视图滑动适配器,因为我已经实现了对回收器视图的滑动手势。 现在,任务列表与已完成和待处理的任务一起显示。每个列表项都有一个复选框,显示任务已完成或挂起。 如果选中复选框,则任务完成,反之亦然。现在我想在这篇文章中用页眉做两个部分。一个用于已完成的任务,另一个用于待完成的任务。 所以完成的任务应该显示在完成的部分中,反

  • 问题内容: 我有一个列表,我想做的是嵌套循环 所需结果 我得到的结果 我希望将 foo 和 col中 的列表项一一注入到上面的shell脚本中。有没有一种方法可以将两个列表项一次传递到上面的shell脚本中? 我们可以做点什么 或使用for循环 引用我的Jenkinsfile }} 问题答案: 我相信转置是您要使用的方法,将两个列表配对,然后可以遍历结果: 更新 : 这就是我的目标。请注意,为简洁

  • 就性能而言,在android应用程序中实现的更好选项是什么: 每个具有不同布局的对象列表都有多个适配器, 处理不同数据的单个适配器。 假设我们需要创建 > 注释, 视频, 问题 在适配器中列出以正确显示数据。每个列表属于不同的布局,这样我们就有了不同的、等等。 公共类FilesAdapter扩展RecyclerView.Adapter{ public static final int VIDEO_

  • 我想计算PySpark数据帧的两列之间的Jaro Winkler距离。Jaro-Winkler距离可通过所有节点上的pyjarowinkler包获得。 pyjarowinkler的工作原理如下: 输出: 我试图编写一个UDF,将两列作为序列传递,并使用lambda函数计算距离。我是这样做的: 我应该能够在上述函数中传递任意两个字符串列。我得到以下输出: 预期产出: 我怀疑这可能是因为不正确。它包含

  • 特别是,当我使用这些行获取错误时: 我尝试了下面的代码: 并且获取常数大于0,并且显示Cart中的项数为1,但是每当我在代码获取问题中使用这一行时,从适配器到活动获取值是正确的方法吗? cartAdapter.java: logcat: