当前位置: 首页 > 知识库问答 >
问题:

仅在第一个RecycerView项中显示特定文本[重复]

边意
2023-03-14

我有一个RecycerView,它将在设备中安装apk,并与cardview排序,因为标题说我想只在第一个cardview项上显示特定的文本(RecycerView viewholder)

private Context context1;
private List<String> stringList;

IZIGaapsAppRecycleView(Context context, List<String> list) {

    context1 = context;
    stringList = list;
}

static class ViewHolder extends RecyclerView.ViewHolder {

    CardView cardView;
    ImageView imageView;
    TextView textView_App_Name;

    ViewHolder(View view) {
        super(view);

        cardView = view.findViewById(R.id.card_view);
        imageView = view.findViewById(R.id.imageView);
        textView_App_Name = view.findViewById(R.id.Apk_Name);
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view2 = LayoutInflater.from(context1).inflate(R.layout.cardview_layout, parent, false);
    return new ViewHolder(view2);
}

@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {

    IZIGaapsApkInfo IZIGaapsApkInfo = new IZIGaapsApkInfo(context1);
    final String ApplicationPackageName = stringList.get(position);
    String ApplicationLabelName = IZIGaapsApkInfo.GetAppName(ApplicationPackageName);
    Drawable drawable = IZIGaapsApkInfo.getAppIconByPackageName(ApplicationPackageName);
    viewHolder.textView_App_Name.setText(ApplicationLabelName);
    viewHolder.imageView.setImageDrawable(drawable);
    viewHolder.cardView.setOnClickListener(view ->

            Snackbar.make(view, ApplicationLabelName, Snackbar.LENGTH_LONG).setAction("ط´ط±ظˆط¹ ط¶ط¨ط·", view1 -> {
                Intent openingApp = new Intent(context1, IZIGaapsMPPermissions.class);
                openingApp.putExtra(IZIGaapsConst.APP_ID, ApplicationPackageName);
                context1.startActivity(openingApp);
            }).show());
}

@Override
public int getItemCount() {

    return stringList.size();
}

共有1个答案

郤令
2023-03-14

我想出了自己的解决办法

简单地为get position添加了一个switch语句,并在该特定位置上执行一些额外的操作,如下所示:

private Context context1;
private List<String> stringList;

IZIGaapsAppRecycleView(Context context, List<String> list) {

    context1 = context;
    stringList = list;
}

static class ViewHolder extends RecyclerView.ViewHolder {

    CardView cardView;
    ImageView imageView;
    TextView textView_App_Name;
    TextView textView_specific_text;

    ViewHolder(View view) {
        super(view);

        cardView = view.findViewById(R.id.card_view);
        imageView = view.findViewById(R.id.imageView);
        textView_App_Name = view.findViewById(R.id.Apk_Name);
        textView_specific_text =  view.findViewById(R.id.texttwo);
    }
}

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view2 = LayoutInflater.from(context1).inflate(R.layout.cardview_layout, parent, false);
    return new ViewHolder(view2);
}

@SuppressLint("SetTextI18n")
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {

    IZIGaapsApkInfo IZIGaapsApkInfo = new IZIGaapsApkInfo(context1);
    final String ApplicationPackageName = stringList.get(position);
    String ApplicationLabelName = IZIGaapsApkInfo.GetAppName(ApplicationPackageName);
    Drawable drawable = IZIGaapsApkInfo.getAppIconByPackageName(ApplicationPackageName);
    viewHolder.textView_App_Name.setText(ApplicationLabelName);

    //added a switch statement to getting position and doing some extra stuff on that specific position
    switch(position){
      case 0:
      viewHolder.textView_specific_text.setText(mytext);
      break;
    }

    viewHolder.imageView.setImageDrawable(drawable);
    viewHolder.cardView.setOnClickListener(view ->

            Snackbar.make(view, ApplicationLabelName, Snackbar.LENGTH_LONG).setAction("ط´ط±ظˆط¹ ط¶ط¨ط·", view1 -> {
                Intent openingApp = new Intent(context1, IZIGaapsMPPermissions.class);
                openingApp.putExtra(IZIGaapsConst.APP_ID, ApplicationPackageName);
                context1.startActivity(openingApp);
            }).show());
}

@Override
public int getItemCount() {

    return stringList.size();
}

}
 类似资料: