簡體   English   中英

單個適配器,適用於多個Recyclerview

[英]Single adapter for multiple recyclerview

我想使用單個適配器為多個RecyclerView共享相同的布局設計。 我創建了一個自定義類,其中包含用於文本,圖片和音頻的3個ArrayList,我在自定義類中插入來自不同片段的資源。

適配器類:

 package com.example.adil.tabpen; import android.media.MediaPlayer; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.adil.tabpen.Fragment.TwoFragment; import com.example.adil.tabpen.OurData; /** * Created by Adil on 10/2/2017. */ public class ListAdapter extends RecyclerView.Adapter { MediaPlayer mediaPlayer; @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false); return new ListViewHolder(view); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ((ListViewHolder) holder).bindView(position); } @Override public int getItemCount() { return OurData.title.size(); } private class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { private TextView text; private ImageView image; private ImageButton button; public ListViewHolder(View itemview) { super(itemview); text = (TextView) itemview.findViewById(R.id.textF); image = (ImageView) itemview.findViewById(R.id.imageF); button = (ImageButton) itemview.findViewById(R.id.button); itemview.setOnClickListener(this); } public void bindView(final int position) { text.setText(OurData.title.get(position)); image.setImageResource(OurData.pic.get(position)); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mediaPlayer = MediaPlayer.create(v.getContext(), OurData.record.get(position)); mediaPlayer.start(); } }); } public void onClick (View view) { } } } 

1st Fragment(小寫字母):

 package com.example.adil.tabpen.Fragment; import android.app.FragmentTransaction; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.ListFragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; import com.example.adil.tabpen.Adapter; import com.example.adil.tabpen.ListAdapter; import com.example.adil.tabpen.OurData; import com.example.adil.tabpen.R; import java.util.ArrayList; /** * A simple {@link Fragment} subclass. */ public class OneFragment extends Fragment { public OneFragment() { // Required empty public constructor } ListView listView; ArrayList<String> players; ArrayList<Integer> images; //String [] players = {"Tamim","Shakib","Mashrafe","Ashraful"}; //int [] images = {R.drawable.a,R.drawable.b,R.drawable.c,R.drawable.a}; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_one, container, false); //Built-in adapter /*String[] menuItem = {"Hello","Hi","Bye"}; ListView listView = (ListView) view.findViewById(R.id.listView); ArrayAdapter<String> listViewAdapter = new ArrayAdapter<String>( getActivity(), android.R.layout.simple_list_item_1, menuItem ); listView.setAdapter(listViewAdapter);*/ //Custom adapter /*listView = (ListView) view.findViewById(R.id.listView); players = new ArrayList<String>(); images = new ArrayList<Integer>(); players.add("Ashraful"); images.add(R.drawable.a); players.add("Aftab"); images.add(R.drawable.a); players.add("Tamim"); images.add(R.drawable.a); Adapter adapter = new Adapter(getActivity(),players,images); listView.setAdapter(adapter); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(getActivity(),players.get(position), Toast.LENGTH_SHORT).show(); } });*/ //Using recycleview OurData ourData = new OurData(); ourData.pic.add(R.drawable.aa); ourData.title.add("Ant"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.bb); ourData.title.add("Bat"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.cc); ourData.title.add("Cry"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.dd); ourData.record.add(R.raw.a); ourData.title.add("Dish"); ourData.pic.add(R.drawable.ee); ourData.title.add("Elephant"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.ff); ourData.title.add("Fish"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.gg); ourData.record.add(R.raw.a); ourData.title.add("Goose"); ourData.pic.add(R.drawable.hh); ourData.title.add("Hen"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.i); ourData.title.add("Ice-cream"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.jj); ourData.title.add("Jeep"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.kk); ourData.title.add("Kite"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.mm); ourData.title.add("Mother"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.nn); ourData.title.add("Nut"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.oo); ourData.record.add(R.raw.a); ourData.title.add("Orange"); ourData.pic.add(R.drawable.pp); ourData.title.add("Price"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.qq); ourData.title.add("Quality"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.rr); ourData.title.add("Rock"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.ss); ourData.title.add("Six"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.tt); ourData.title.add("Time"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.uu); ourData.title.add("Use"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.vv); ourData.record.add(R.raw.a); ourData.title.add("Via"); ourData.pic.add(R.drawable.ww); ourData.title.add("Watch"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.xx); ourData.title.add("Xylophone"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.yy); ourData.title.add("Yolk"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.zz); ourData.title.add("Zebra"); ourData.record.add(R.raw.a); RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.listRecyclerView); ListAdapter listAdapter = new ListAdapter(); recyclerView.setAdapter(listAdapter); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); return view; } /* private void onViewCreated() { }*/ } 

第二個片段(大寫字母):

 package com.example.adil.tabpen.Fragment; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.adil.tabpen.ListAdapter; import com.example.adil.tabpen.OurData; import com.example.adil.tabpen.R; /** * A simple {@link Fragment} subclass. */ public class TwoFragment extends Fragment { public TwoFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view = inflater.inflate(R.layout.fragment_two, container, false); OurData ourData = new OurData(); ourData.pic.add(R.drawable.a); ourData.title.add("Apple"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.b); ourData.title.add("Ball"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.c); ourData.title.add("Cat"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.d); ourData.record.add(R.raw.a); ourData.title.add("Dog"); ourData.pic.add(R.drawable.e); ourData.title.add("Egg"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.f); ourData.title.add("Flower"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.g); ourData.record.add(R.raw.a); ourData.title.add("Game"); ourData.pic.add(R.drawable.h); ourData.title.add("Horse"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.i); ourData.title.add("Igloo"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.j); ourData.title.add("Jacket"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.k); ourData.title.add("Key"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.m); ourData.title.add("Mango"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.n); ourData.title.add("Net"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.o); ourData.record.add(R.raw.a); ourData.title.add("Owl"); ourData.pic.add(R.drawable.p); ourData.title.add("Potato"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.q); ourData.title.add("Quit"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.r); ourData.title.add("Race"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.s); ourData.title.add("Shop"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.t); ourData.title.add("Tomato"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.u); ourData.title.add("Umbrella"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.v); ourData.record.add(R.raw.a); ourData.title.add("Vehicle"); ourData.pic.add(R.drawable.w); ourData.title.add("Window"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.x); ourData.title.add("X-Ray"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.y); ourData.title.add("Yellow"); ourData.record.add(R.raw.a); ourData.pic.add(R.drawable.z); ourData.title.add("Zoo"); ourData.record.add(R.raw.a); RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.listRecyclerView); ListAdapter listAdapter = new ListAdapter(); recyclerView.setAdapter((listAdapter)); RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); return view; } } 

第一個片段包括小寫字母,音頻和圖片。 第二片段包括大寫字母,音頻和圖片。 我的代碼工作正常,但我覺得我搞砸了。 當我運行代碼時,我在兩個片段中都獲得了大寫和小寫字母。 但我的目標是用大寫字母片段和小寫字母片段中的大寫字母。 我無法找到我應該在哪里改變。

嘗試這個

package com.example.adil.tabpen;

import android.media.MediaPlayer;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.adil.tabpen.Fragment.TwoFragment;
import com.example.adil.tabpen.OurData;

/**
 * Created by Adil on 10/2/2017.
 */

public class ListAdapter extends RecyclerView.Adapter {
    MediaPlayer mediaPlayer;
    private boolean isUpperCase;
    public ListAdapter(boolean isUpperCase){
      this.isUpperCase = isUpperCase;
    } 
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
    {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_item, parent, false);
        return new ListViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
    {
        ((ListViewHolder) holder).bindView(position);

    }

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

    private class ListViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
    {
        private TextView text;
        private ImageView image;
        private ImageButton button;

        public ListViewHolder(View itemview)
        {
            super(itemview);
            text = (TextView) itemview.findViewById(R.id.textF);
            image = (ImageView) itemview.findViewById(R.id.imageF);
            button = (ImageButton) itemview.findViewById(R.id.button);
            itemview.setOnClickListener(this);
        }


        public void bindView(final int position)
        {
            text.setText(isUpperCase ? OurData.title.get(position).toUpperCase() : OurData.title.get(position).toLowerCase());
            image.setImageResource(OurData.pic.get(position));
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v)
                {

                    mediaPlayer = MediaPlayer.create(v.getContext(), OurData.record.get(position));
                    mediaPlayer.start();
                }
            });
        }

        public void onClick (View view)
        {

        }


    }
}

然后在創建適配器時,您應該

ListAdapter listAdapter = new ListAdapter(true); 僅獲取大寫字母或ListAdapter listAdapter = new ListAdapter(false); 小寫字母

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM