i have 5 tabs in my appe
in each tabs items are displayed.
but when i moved from tab to tab,or scrolling recycler view,
Doubling the number of items
Adapter class:
package com.narsis.countriesandcontinents.mainPage;
import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.narsis.countriesandcontinents.Africa_Fragment;
import com.narsis.countriesandcontinents.Database;
import com.narsis.countriesandcontinents.R;
import com.narsis.countriesandcontinents.Structure;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.zip.Inflater;
import static android.support.v7.widget.RecyclerView.*;
import static java.security.AccessController.getContext;
public class AdapterCardView extends RecyclerView.Adapter<ViewHolder> {
Context context;
LayoutInflater inflater;
List<Structure> items = Collections.emptyList();
public int flagLoadItems=0;
String pathfont="fonts/Mj_Text Bold.ttf";
Typeface tf=Typeface.createFromAsset(MainActivity.context.getAssets(),pathfont);
public AdapterCardView(Context context, List<Structure> items) {
this.context=context;
this.items = items;
inflater=LayoutInflater.from(context);
setHasStableIds(false);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view=LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_cardview,parent,false);
TextView textView= (TextView) view.findViewById(R.id.txt_title);
ViewHolder viewHolder= new ViewHolder(view,textView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
Database database=new Database(context);
holder.txt_countryname.setText(items.get(position).getCountry_Name());
holder.txt_countryname.setTypeface(tf);
int resID = context.getResources().getIdentifier(items.get(position).getFlag(),"mipmap", context.getPackageName());
if((items.get(position).getFlag()).equals("0"))
{
try {
holder.img_flags.setImageBitmap(database.getBitmapFromAssets("iran.png"));
} catch (IOException e) {
e.printStackTrace();
}
}
else {
holder.img_flags.setImageResource(resID);
}
}
@Override
public int getItemCount() {
flagLoadItems=1;
return items.size();
}
@Override
public long getItemId(int position)
{
return super.getItemId(position);
}
public void filter(ArrayList<Structure> newarrayList){
items= new ArrayList<>();
items.addAll(newarrayList);
notifyDataSetChanged();
}
}
Fragment:
package com.narsis.countriesandcontinents;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.ContactsContract;
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.narsis.countriesandcontinents.mainPage.AdapterCardView;
import java.util.ArrayList;
/**
* A simple {@link Fragment} subclass.
*/
public class Australia_Fragment extends Fragment {
RecyclerView recyclerView;
ArrayList<Structure>arrayList =new ArrayList<>();
// int flag=0;
AdapterCardView adapcard;
public Australia_Fragment() {
// 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_asia_, container, false);
recyclerView= (RecyclerView) view.findViewById(R.id.my_recyclerview);
AdapterCardView adapterCardView = new AdapterCardView(getContext(), arrayList);
recyclerView.setAdapter(adapterCardView);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setHasFixedSize(true);
loadDatabase();
return view;
}
public void loadDatabase(){
final Database database=new Database(getContext());
database.CreateDatabase();
database.openDatabase();
Cursor cursor=database.QueryData("SELECT * FROM Country WHERE Ghareh='استرالیا'");
if (cursor!=null && cursor.moveToFirst()){
do
{
Structure structure = new Structure();
structure.setCountry_Name(cursor.getString(1));
structure.setFlag(cursor.getString(4));
structure.setCapital(cursor.getString(2));
structure.setGhareh(cursor.getString(3));
structure.setMeanCountry(cursor.getString(5));
arrayList.add(structure);
}
while (cursor.moveToNext());
recyclerView.addOnItemTouchListener(new RecyclerItemClickListener(getContext(),recyclerView, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Alert alert = new Alert(getActivity());
for (int i=0;i<=position;i++)
{
alert.country_data.setText(arrayList.get(position).getCountry_Name());
alert.capital_data.setText(arrayList.get(position).getCapital());
alert.ghareh_data.setText(arrayList.get(position).getGhareh());
alert.meancountrydata.setText(arrayList.get(position).getMeanCountry());
int id=getContext().getResources().getIdentifier(arrayList.get(position).getFlag(),"mipmap",getContext().getPackageName());
alert.imgDialog.setImageResource(id);
alert.show();
}
database.close();
}
@Override
public void onLongItemClick(View view, int position) {
}
}));
}
}
}