【问题标题】:Show specific text only in first recyclerview item [duplicate]仅在第一个 recyclerview 项目中显示特定文本 [重复]
【发布时间】:2017-12-19 09:35:03
【问题描述】:

我有一个 recyclerview,它将在设备中安装 apk 并使用 cardview 对它们进行排序,因为标题说我只想在第一个 cardview 项目(recyclerview 视图持有者)上显示特定文本

这是我的代码:

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

}

任何帮助将不胜感激

【问题讨论】:

  • 您可以简单地保持该视图不可见或消失在第 0 个位置以外的项目
  • @VivekMishra 不知道为什么,但是你用简单的答案在我的大脑中抛出了一个频率,让我做出了一些改变,现在它工作完美,支持你,我也用我所做的改变来更新问题也许它对其他人有用

标签: android android-recyclerview android-cardview


【解决方案1】:

我提出了自己的解决方案

只需添加一个 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();
}

}

【讨论】:

  • 使用异构回收器视图来避免适配器错误......当你在回收器视图中有更多项目时@pourya011
  • 谢谢,但我只是使用了几行代码,这对我有帮助,没有任何问题@KoVartthan
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-15
  • 1970-01-01
  • 2015-07-31
相关资源
最近更新 更多