Saturday, 21 July 2018

Android RecyclerView dependency malayalam

ListView ന്റെ  ഒരു  advanced version ആണ്  RecyclerView

ഈ  model ഇത്  nammude data യെ  display ചെയ്യാൻ  വേണ്ടി  ഒരുപാട്  components ഒരുമിച്ചു  work ചെയ്യും .

മൊത്തത്തിൽ  user interface നു  വേണ്ടി   നമ്മുടെ  container എന്ന്  പറഞ്ഞാൽ   layout ൽ   add ചെയ്യുന്ന  RecyclerView ആണ്

 നമ്മൾ  നൽകുന്ന  layout manager ഉപയോഗിച്ച്  RecyclerView സ്വയം  view fill ചെയ്യും .

 LinearLayoutManager അല്ലെങ്കിൽ   GridLayoutManager), അല്ലെങ്കിൽ  നമ്മുടെ  തന്നെ  layout manager  ഓ  namukk ഉപയോഗിക്കാം

list ൽ  ഉള്ള  views അവതരിപ്പിക്കുന്നത്  view holder object ആണ്

ഓരോ  view holder ഉം  ഓരോ   item തിനെ  charge ചെയ്തു  display ചെയ്യും

View holder object നെ  manage ചെയ്യുന്നത്  ഒരു  adpter ആയിരിക്കും  അതായത്  നമ്മൾ  extends ചെയ്യുന്ന  RecyclerView.Adapter

ആവധ്യമുള്ള  view holder ഇനി  create ചെയ്യുന്നത്  adpter class ആയിരിക്കും

view holder ന്റെ  data യെ  bind ചെയ്യുന്നതും  adapter class ആയിരിക്കും

onBindViewHolder() method ഉപയോഗിച്ച്  view holder ഇന്  oru position assign ചെയ്തു  കൊണ്ടാണ്  ഇത്  ചെയ്യുന്നത്  .

RecyclerView model ഒരുപാട്  കാര്യങ്ങൾ  ചെയ്യുന്നുണ്ട്  ,അതിനാൽ  നമുക്ക്  ഒരുപാട്  work load കുറക്കാം



* നമ്മുക്ക്  10 item ഉണ്ടെങ്കിൽ  ,list first populate ചെയ്യുമ്പോൾ  list ന്റെ  രണ്ടു  side യിലും  view holder കൽ  create ചെയ്യുകയും  bind ചെയ്യുകയും  ചെയ്യും . ,അതായത് 0-9 വരെ  ഇങ്ങനെ  first ചെയ്യുമ്പോൾ  പത്താമത്തെ  item നെയും  create ചെയ്യുകയും  bind ചെയ്യുകയും  ചെയ്യും  ,അതായതു  പിന്നെ  user scroll ചെയ്യുമ്പോൾ  അത്  display ചെയ്യാൻ  ready ആയിരിക്കുമെന്ന്  .



*user scroll സിഹ്യ്യുമ്പോൾ  പുതിയ  view holder create ചെയ്യുകയും  bind ചെയ്യുകയും  ചെയ്യും , കൂടാതെ  വീണ്ടും  പുറകിലോട്ടു  ചെല്ലുമ്പോൾ  വീണ്ടും  തിരിച്ചു  കൊണ്ട്  വരുവാൻ  screen ഇന്  പുറത്തുള്ള  items ഇനി  save ചെയ്യുകയും  ചെയ്യും



*display ചെയ്തിരിക്കുന്ന  item മാറുമ്പോൾ  adpter ക്ലാസ്സിനെ  വിളിച്ചു  കൊണ്ട്  ആ  change RecyclerView.Adapter.notify…() ഉപയോഗിച്ച്  affect ചെയ്താ  ഭാഗം  മാത്രം  adapter class code rebuild ചെയ്യുകയും  bind ചെയ്യുകയും  ചെയ്യും

build.gradle file open ചെയ്തു  support library add ചെയ്യാം

dependencies {
    implementation 'com.android.support:recyclerview-v7:27.1.1'
}


ഇനി  നമ്മുടെ  mainactivity xml file ൽ  Recylerview add ചെയ്യാം


<android.support.v7.widget.RecyclerView
    android:id="@+id/my_recycler_view"
    android:scrollbars="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

ഇനി  mainactivity class ൽ  ചെല്ലാം

private RecyclerView mRecyclerView;
    private RecyclerView.Adapter mAdapter;
    private RecyclerView.LayoutManager mLayoutManager;

ഇതിൽ  oncreate budle method ൽ

mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);

     

        //  content നു  അനുസരിച്ചു   RecyclerView ന്റെ  layout size മാറാതിരിക്കാൻ  

        mRecyclerView.setHasFixedSize(true);


        //  linear layout manager ഉപയോഗിച്ച് 

        mLayoutManager = new LinearLayoutManager(this);

        mRecyclerView.setLayoutManager(mLayoutManager);


        //  adapter class specify ചെയ്യാം  അതായതു MyAdapter   



        mAdapter = new MyAdapter(myDataset);


        mRecyclerView.setAdapter(mAdapter);

ഇനി  adapter class ഉപയോഗിക്കാം

നമ്മൾ  create ചെയ്താ  MyAdapter  നെ  RecyclerView.Adapter അതായതു  RecyclerView ന്റെ  Adapter ഉപയോഗിച്ച്  extends ചെയ്യാം  .

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>

ഒരു  mDataset string array define

 private String[] mDataset;

ചെയ്യാം  അതിൽ  കുറച്ചു  data കൊടുക്കാം

ഇതിൽ  ഒരു  ViewHolder class ഉണ്ടാക്കി  RecyclerView ന്റെ  ViewHolder വെച്ച്  extends ചെയ്യാം



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

    private String[] mDataset;

   
   

//view holder ഇലെ  data item ത്തിനു  വേണ്ടി  എല്ലാ  access ഉം  views നു  നൽകാം 

    public static class ViewHolder extends RecyclerView.ViewHolder {

        // ഓരോ  data item വും  ഇതിൽ  verum ഒരു   string ആണ് 

        public TextView mTextView;

        public ViewHolder(TextView v) {

            super(v);

            mTextView = v;

        }

    }



    // ഒരു   suitable constructor ഉണ്ടാക്കാം  ( dataset ഇന്  അനുസരിച്ചു )

    public MyAdapter(String[] myDataset) {

        mDataset = myDataset;

    }

    // പുതിയ  views  ഉണ്ടാക്കാം ( layout manager വിളിച്ചാൽ )

    @Override

    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,

                                                   int viewType) {

        // പുതിയ  views ഉണ്ടാക്കാം 

        TextView v = (TextView) LayoutInflater.from(parent.getContext())

                .inflate(R.layout.my_text_view, parent, false);

        ...

        ViewHolder vh = new ViewHolder(v);

        return vh;

    }



    //  view സിലെ  content replace ചെയ്യാം  ( layout manager വിളിച്ചാൽ )

    @Override

    public void onBindViewHolder(ViewHolder holder, int position) {

        // ഈ  position നിൽ  dataset ൽ  നിന്ന്  element എടുക്കാം 

        // ഈ  element ഉപയോഗിച്ച്  view content replace ചെയ്യാം 

        holder.mTextView.setText(mDataset[position]);



    }



    //    dataset ന്റെ  size  Return  ചെയ്യാം   ( layout manager വിളിച്ചാൽ )
    @Override
    public int getItemCount() {
        return mDataset.length;
    }
}




No comments:

Post a Comment