2

I want to display something like this-->My Home activity..inside Whats Android,Start learning ,Get ahead there are recycleviews like this-->enter image description here

how do I implement this kind of progressbar based upon users reading??

My Home activity:

public class MainActivity extends AppCompatActivity {

private RecyclerView recyclerview ;
private String[] names ;
private TypedArray profile_pics ;
private TypedArray card_images;
 ImageView imageView;

private List<Member> memberList ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super .onCreate(savedInstanceState);
    setContentView(R.layout. activity_main );
    imageView=findViewById(R.id.search);

   Toolbar toolbar = (Toolbar) findViewById(R.id. toolbar );
   setSupportActionBar( toolbar );
    names = getResources().getStringArray(R.array. names );
    profile_pics = getResources().obtainTypedArray(R.array. profile_pics );
    card_images=getResources().obtainTypedArray(R.array.card_images);
    memberList = new ArrayList<>();
    for (int i = 0; i < names.length; i++) {
        Member member = new Member( names [i], profile_pics .getResourceId(i, -1),card_images.getResourceId(i,-1));
        memberList .add( member );
    }
    recyclerview = (RecyclerView) findViewById(R.id. recyclerview );
    LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
    recyclerview.setLayoutManager( layoutManager );
    MainAdapter adapter = new MainAdapter(memberList, MainActivity.this);
    recyclerview .setAdapter( adapter );
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent=new Intent(getApplicationContext(),Search.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            getApplicationContext().startActivity(intent);
        }
    });}}

home activity adapter:

public class MainAdapter extends RecyclerView.Adapter<MainAdapter.MemberViewHolder> {
private List<Member> members ;
private Context context ;
public MainAdapter(List<Member> members , Context context ) {
    this. members = members;
    this. context = context;
}
public class MemberViewHolder extends RecyclerView.ViewHolder {
    private CardView cardView ;
    private TextView name_tv ;
    private ImageView email_tv ;
    private ImageView pic_iv ;
    public MemberViewHolder(View itemView) {
        super (itemView);
        cardView = (CardView) itemView.findViewById(R.id. cv );
        name_tv = (TextView) itemView.findViewById(R.id. member_name );
        email_tv=(ImageView) itemView.findViewById(R.id.thumbnail);
        pic_iv = (ImageView) itemView.findViewById(R.id. profile_pic );
    }
  }

@Override
public void onBindViewHolder(MemberViewHolder memberViewHolder, int i) {
    final int pos = i;
    memberViewHolder. name_tv .setText(members.get(i).getName());
    memberViewHolder.email_tv.setImageResource(members.get(i).getCards());
    memberViewHolder. pic_iv .setImageResource(members.get(i).getPhotoID());
    memberViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(pos == 0){
                view.getContext().startActivity(new Intent(view.getContext(), Introduction.class));
            }

            else if(pos == 1){
                view.getContext().startActivity(new Intent(view.getContext(), WhatsAndroid.class));
            }

            else if(pos == 2){
                view.getContext().startActivity(new Intent(view.getContext(), StartLearning.class));
            }
            else if(pos == 3){
                view.getContext().startActivity(new Intent(view.getContext(), GetAhead.class));
            }

            else if(pos == 4){
                view.getContext().startActivity(new Intent(view.getContext(), TipsandTricks.class));
            }
            else if (pos==5)
            {
                view.getContext().startActivity(new Intent(view.getContext(), Interview.class));

            }
        }
    });
}
@Override
public MemberViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout. cardview_row_item , viewGroup, false);
    MemberViewHolder memberViewHolder = new MemberViewHolder(view);
    return memberViewHolder;
}
@Override
public int getItemCount() {
    return members.size();
 }
}

taking one of view of home (Start learning activity) which is loading a retrofit data:

public class StartLearning extends AppCompatActivity {
private RecyclerView recyclerView;
private SLAdapter slAdapter;
ProgressDialog progressDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.startlearning_layout);
    progressDialog = new ProgressDialog(StartLearning.this);
    progressDialog.setMessage("Loading....");
    progressDialog.show();
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        /*Create handle for the RetrofitInstance interface*/
        SLApiSevice service = SLApiClient.getRetrofitInstance().create(SLApiSevice.class);
        Call<List<SlModel>> call = service.getMySlmodel();

        call.enqueue(new Callback<List<SlModel>>() {
            @Override
            public void onResponse(Call<List<SlModel>> call, Response<List<SlModel>> response) {
                progressDialog.dismiss();
                generateDataList(response.body());

            }

            @Override
            public void onFailure(Call<List<SlModel>> call, Throwable t) {
                progressDialog.dismiss();
                Toast.makeText(getApplicationContext(), "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();


            }
        });
    }
}
private void generateDataList(List<SlModel> employeeList) {
    recyclerView = findViewById(R.id.SLrecycle);
    LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(manager);
    recyclerView.setHasFixedSize(true);
    slAdapter = new SLAdapter(getApplicationContext(),employeeList);
    recyclerView.setAdapter(slAdapter);
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    if (item.getItemId() == android.R.id.home) {
        finish();
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
}

start learning adapter :

public class SLAdapter extends RecyclerView.Adapter<SLAdapter.CustomViewHolder> {

List<StartLearning.SlModel> Slmdel;
Context context;

public SLAdapter(Context context,List<StartLearning.SlModel> employees) {
    this.Slmdel = employees;
    this.context=context;
}

@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.startlearning_item, parent, false);

    return new CustomViewHolder(itemView);
}

@Override
public void onBindViewHolder(CustomViewHolder holder, int position) {
    // TipsModel employee = employees.get(position);
    //// holder.employeeName.setText(employees.get(position).getTips());
    holder.textView.setText(String.valueOf(position+1)+". ");
    holder.employeeName.setText(Slmdel.get(position).getTitle());


}

@Override
public int getItemCount() {
    return Slmdel.size();
    //return (employees == null) ? 0 : employees.size();

}

public class CustomViewHolder extends RecyclerView.ViewHolder {
    public TextView employeeName;
    TextView textView;

    public CustomViewHolder(View view) {
        super(view);
        employeeName = (TextView) view.findViewById(R.id.Sl2);
        textView=view.findViewById(R.id.Sl1);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent =  new Intent(context, NextSLactivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                intent.putExtra("title", Slmdel.get(getAdapterPosition()).getTitle());
               intent.putExtra("idSLnext", Slmdel.get(getAdapterPosition()).getId());
                //Log.e("ashwini",WAmdel.get(getAdapterPosition()).getId());
                context.startActivity(intent);

            }
        });


    }
  }
}
matthias_h
  • 11,356
  • 9
  • 22
  • 40
Wini
  • 1,906
  • 1
  • 12
  • 31
  • How do you get user's read status? Is that from `getMySlmodel()`? – shafayat hossain Dec 31 '19 at 02:17
  • I have not done anything for user's read status – Wini Dec 31 '19 at 04:53
  • There must be something to get user's reading status or how many articles user read. Otherwise you can not calculate progress of users reading. – shafayat hossain Dec 31 '19 at 05:20
  • How to do that? User's reading status? – Wini Dec 31 '19 at 05:34
  • There can be an API which will be called if user read an article. That API will count how many articles that user read. – shafayat hossain Dec 31 '19 at 05:38
  • But I don't have that Api. For user read.. Then how can I implement? I don't know how to do it... Is there there any alternative? – Wini Dec 31 '19 at 06:01
  • I only have Apis which contains only data – Wini Dec 31 '19 at 06:02
  • Then you can save reading status in shared preference. – shafayat hossain Dec 31 '19 at 12:19
  • You can get lots of post on sharedpreference at google. That would help you much better. – shafayat hossain Dec 31 '19 at 12:30
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/205155/discussion-between-shafayat-hossain-and-wini). – shafayat hossain Dec 31 '19 at 15:34
  • you can get shared preference in this way SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE); To get integer data in preference int count = sharedPref.getInt("read_count", defaultValue); To set data into preference SharedPreferences.Editor editor = sharedPref.edit(); editor.putInt("read_count", readCount); editor.commit();....where do I put this in code???what about progress bar as well? – Wini Dec 31 '19 at 15:46
  • I had a similar issue and solved it. My answer is [here](https://stackoverflow.com/a/59636369/12670379) – Amitoj Singh Jan 07 '20 at 22:25
  • @AmitojSingh...I don't want this...I want progressbar based upon users reading...see I have a typed array to display card in home ...on items like item[1],item[2],item[3] should give me reading status of user in tutorial ...for ex next time when user open the app it should give status like 20%,...or 70% based upon last readings....above shafayat has suggested me to use shared preference ..but I don't understood where should I use that... – Wini Jan 08 '20 at 08:28
  • @Wini when user click on `Recyclerview item` then You take the to next activity and that Activity contain specific amount of fragment Is that it ? – Rahul sharma Jan 10 '20 at 06:59
  • @frankenstein ..do you have solutions ? – Wini Jan 13 '20 at 14:25
  • @Wini You realise there's bits of code brackets stuck outside the code block right? That's what the edit was mostly to fix – Taazar Feb 04 '20 at 09:23

2 Answers2

0

first change your Adapter CardView Item to include this CircleProgressBar and then for each item you can set your progress level

Ezaldeen sahb
  • 719
  • 7
  • 12
  • this is not what I want...I want progressbar based upon users reading...see I have a typed array to display card in home ...on items like item[1],item[2],item[3] should give me reading status of user in tutorial ...for ex next time when user open the app it should give status like 20%,...or 70% based upon last readings....above shafayat has suggested me to use shared preference ..but I don't understood where should I use that... – Wini Jan 06 '20 at 12:17
0

First you need to get Data but as this question is regarding showing circular progressbar with perentage here is how you can do it

1.Creating drawable resource file Create one drawable resource file named circular.xml (drawable resource file means in android studio project’s file structure, you will find a folder named drawable inside a res folder as shown in the below image.)

2.Coding circular.xml Copy and paste following code into circular.xml

Code

....

rather writing same i recommend check this out https://demonuts.com/circular-progress-bar/

Sanskar Tiwari
  • 139
  • 3
  • 10
  • this is not what I want...I want progressbar based upon users reading...see I have a typed array to display card in home ...on items like item[1],item[2],item[3] should give me reading status of user in tutorial ...for ex next time when user open the app it should give status like 20%,...or 70% based upon last readings....above shafayat has suggested me to use shared preference ..but I don't understood where should I use that... – Wini Jan 06 '20 at 12:17