gpt4 book ai didi

java - 安卓 : Setting text in recycler view

转载 作者:行者123 更新时间:2023-12-02 04:27:18 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序,在其中以网格样式显示数据。我又添加了一个 TextView,我想在其中显示从服务器获取的一些数据。不幸的是,我不知道如何才能做到这一点。目前,我已将数据放入一个类(LineItem)的一个变量中,我以网格方式添加其内容。我希望有人能帮助我解决这个问题。

SectionAdapters.java:

public class SectionAdapters extends RecyclerView.Adapter<SectionViewHolder> {


private NoteServiceImpl noteService = new NoteServiceImpl();

private static final int LINEAR = 0;

private final Context mContext;

private SectionServiceImpl sectionService = new SectionServiceImpl();

List<RestSection> restSectionList = new ArrayList<>();

private int mHeaderDisplay;

private final ArrayList<LineItem> mItems;

public SectionAdapters(Context context, int headermode) {
mContext = context;

String lastHeader = "";

int sectionManager = -1;
int headerCount = -1;
int sectionFirstPosition = 0;

mItems = new ArrayList<>();

restSectionList = this.sectionService.getSectionByCanvas(2500);

// As you can see in the below for loop, I am getting the setting value for LineItems last parameter, and adding it in mItems. But I don't know how to set it.
for (int i = 0; i < restSectionList.size(); i++) {
String header = restSectionList.get(i).getMsectionname();
RestNote restNote = this.noteService.getFirstNoteForSection(restSectionList.get(i).getMsectionid());
mItems.add(new LineItem(header, true, sectionManager, sectionFirstPosition, restNote.getMnotetext()));

}
}

public String itemToString(int position) {
return mItems.get(position).text;
}

private void notifyHeaderChanges() {
for (int i = 0; i < mItems.size(); i++) {
LineItem lineItem = mItems.get(i);
if (lineItem.isHeader) {
notifyItemChanged(i);
}
}
}

@Override
public SectionViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view;
// IN the below layout, i.e activity_group_section, there is a textview to be populated
view = LayoutInflater.from(parent.getContext()).inflate(R.layout.activity_group_section, parent, false);
return new SectionViewHolder(view);
}

@Override
public void onBindViewHolder(SectionViewHolder holder, int position) {
final LineItem item = mItems.get(position);
final View itemView = holder.itemView;
// The first text is set below.
holder.bindText(item.text);
final GridSLM.LayoutParams lp = GridSLM.LayoutParams.from(itemView.getLayoutParams());

lp.setSlm(item.sectionManager == LINEAR ? LinearSLM.ID : GridSLM.ID);
lp.setColumnWidth(mContext.getResources().getDimensionPixelSize(R.dimen.grid_column_width));
lp.setFirstPosition(item.sectionFirstPosition);
itemView.setLayoutParams(lp);
}

@Override
public int getItemCount() {
return mItems.size();
}

private static class LineItem {

public int sectionManager;

public int sectionFirstPosition;

public boolean isHeader;

public String text;

// The below line which I have added is something I would like to display in grid.
public String otherText;

public LineItem(String text, boolean isHeader, int sectionManager,
int sectionFirstPosition, String otherText) {
this.isHeader = isHeader;
this.text = text;
this.sectionManager = sectionManager;
this.sectionFirstPosition = sectionFirstPosition;
this.otherText = otherText;
}
}
}

Activity 组部分:

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="5dip" >

<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="5dp"
android:orientation="vertical">
<ImageView
android:id="@+id/sectionimage"
android:layout_width="140dp"
android:layout_height="200dp"
android:scaleType="fitXY"
android:padding="5dp"
android:src="@drawable/sectionbackground"
/>

<TextView
android:id="@+id/sectionname"
android:layout_width="90dp"
android:layout_height="match_parent"
android:text="@string/textView"
android:visibility="visible"
android:gravity="center"
android:layout_gravity="center_horizontal|top"
android:maxLines="1"
android:ellipsize="end"
android:scrollHorizontally="true"
android:layout_marginTop="20dp" />

// The guy below is where I want to set text
<TextView
android:layout_width="97dp"
android:layout_height="160dp"

android:id="@+id/noteText"
android:layout_gravity="center_horizontal|bottom"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp" />
</FrameLayout>
</RelativeLayout>

我希望我的问题很清楚。如果需要任何解释,请告诉我。多谢。 :-)

编辑

SectionViewHolder:我添加了 noteData 变量来显示 noteData。

public class SectionViewHolder extends RecyclerView.ViewHolder {

private TextView textView;
private TextView noteData;
private ImageView imageView;

public SectionViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.sectionname);
imageView = (ImageView) itemView.findViewById(R.id.sectionimage);
noteData = (TextView) itemView.findViewById(R.id.noteText);
}

public void bindText(String text){
textView.setText(text);
}

public void bindImage(Bitmap bitmap){
imageView.setImageBitmap(bitmap);
}

public void bindNoteData(String data){
noteData.setText(data);
}


}

最佳答案

尝试这样的事情:

@Override
public void onBindViewHolder(SectionViewHolder holder, int position) {
final LineItem item = mItems.get(position);
final View itemView = holder.itemView;
// The first text is set below.
holder.bindText(item.text);
holder.bindNoteData(item.otherText);
final GridSLM.LayoutParams lp = GridSLM.LayoutParams.from(itemView.getLayoutParams());

lp.setSlm(item.sectionManager == LINEAR ? LinearSLM.ID : GridSLM.ID);
lp.setColumnWidth(mContext.getResources().getDimensionPixelSize(R.dimen.grid_column_width));
lp.setFirstPosition(item.sectionFirstPosition);
itemView.setLayoutParams(lp);
}

我添加了这一行:

holder.bindNoteData(item.otherText);

关于java - 安卓 : Setting text in recycler view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31989065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com