【问题标题】:how do I implement progress bar outside of the recycle view activity? [closed]如何在回收视图活动之外实现进度条? [关闭]
【发布时间】:2025-12-18 22:05:01
【问题描述】:

我想显示这样的东西-->My Home activity..inside Whats Android,开始学习,前进有这样的recycleviews-->enter image description here

如何实现这种基于用户阅读的进度条??

我的家庭活动:

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);
        }
    });}}

家庭活动适配器:

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();
 }
}

查看正在加载改造数据的家庭(开始学习活动):

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();
}

开始学习适配器:

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);

            }
        });


    }
  }
}

【问题讨论】:

  • 如何获取用户的阅读状态?是来自getMySlmodel()吗?
  • 我没有为用户的阅读状态做任何事情
  • 必须有东西来获取用户的阅读状态或用户阅读了多少篇文章。否则无法计算用户阅读进度。
  • 怎么做?用户的阅读状态?
  • 可以有一个API,如果用户阅读了一篇文章就会被调用。该 API 将计算用户阅读了多少篇文章。

标签: android retrofit retrofit2 android-progressbar


【解决方案1】:

首先更改您的适配器 CardView 项目以包含此 CircleProgressBar,然后您可以为每个项目设置进度级别

【讨论】:

  • 这不是我想要的...我想要基于用户阅读的进度条...请参阅我有一个类型化的数组来在家中显示卡片...在 item[1],item 等项目上[2],item[3] 应该在教程中给我用户的阅读状态...例如,当用户下次打开应用程序时,它应该提供 20% 的状态,...或 70%(基于上次读数)... .above shafayat 建议我使用共享偏好 ..但我不明白我应该在哪里使用它...
【解决方案2】:

首先您需要获取数据,但由于这个问题是关于显示带有百分比的圆形进度条,因此您可以这样做

1.创建可绘制资源文件 创建一个drawable资源文件,命名为circular.xml(drawable资源文件是指在android studio项目的文件结构中,你会在res文件夹中找到一个名为drawable的文件夹,如下图所示。)

2.编码circular.xml 将以下代码复制并粘贴到 circular.xml 中

Code

....

我建议写同样的内容https://demonuts.com/circular-progress-bar/

【讨论】:

  • 这不是我想要的...我想要基于用户阅读的进度条...请参阅我有一个类型化的数组来在家中显示卡片...在 item[1],item 等项目上[2],item[3] 应该在教程中给我用户的阅读状态...例如,当用户下次打开应用程序时,它应该提供 20% 的状态,...或 70%(基于上次读数)... .above shafayat 建议我使用共享偏好 ..但我不明白我应该在哪里使用它...
最近更新 更多