我的目标是在TextViews中显示网址链接(普通链接和镜像链接),这些链接是两个不同的.xml文件的一部分,这些文件正在膨胀,然后在下面显示其他在RecyclerView中。 除了TextView ID(text和mir)之外,两个.xml文件是相同的,例如:
mirror_text_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_selector"
android:clickable="true">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/mir"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:maxLines="1"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:text=""
android:textColor="?attr/colorPrimary"
android:textSize="16dp" />
</RelativeLayout>
</RelativeLayout>
下面的DownloadAdapter代码到目前为止工作但镜像链接始终显示在.xml(download_text_item)的TextView(id:text)部分中,它们应该显示在tv(id)中:mir)mirror_text_item.xml的一部分,它位于download_text_item.xml下面。
DownloadAdapter:
public class DownloadAdapter extends RecyclerView.Adapter<DownloadAdapter.ViewHolder> {
String[] items;
Fragment fragment;
public DownloadAdapter(Fragment fragment, String[] items) {
this.fragment = fragment;
this.items = items;
}
class MirrorViewHolder extends ViewHolder {
private TextView textView;
private View itemView;
public MirrorViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.mir);
this.itemView = itemView;
}
}
class DownloadViewHolder extends ViewHolder {
private TextView textView;
private View itemView;
public DownloadViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text);
this.itemView = itemView;
}
}
@Override
public DownloadAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View a, v = null;
if (Utils.downloadVis == 0) {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.download_text_item, parent, false);
return new DownloadViewHolder(v);
}
else {
v = LayoutInflater.from(parent.getContext()).inflate(R.layout.mirror_text_item, parent, false);
return new MirrorViewHolder(v);
}
}
public String getSelection(int position) {
return items[position];
}
@Override
public int getItemViewType(int position) {
return 1;
}
@Override
public void onBindViewHolder(DownloadAdapter.ViewHolder viewholder, final int position) {
final String item = Utils.unescapeJavaString(Html.fromHtml(getSelection(position)).toString());
if(viewholder instanceof DownloadViewHolder){
DownloadViewHolder holder = (DownloadViewHolder) viewholder;
holder.textView.setText(item);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Utils.openUri(fragment, item);
}
});
} else {
MirrorViewHolder holder = (MirrorViewHolder) viewholder;
holder.textView.setText("Just a test!");
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Utils.openUri(fragment, item);
}
});
}
}
@Override
public int getItemCount() {
return items.length;
}
class ViewHolder extends RecyclerView.ViewHolder {
private TextView text, mir;
private View itemView;
public ViewHolder(View itemView) {
super(itemView);
text = (TextView) itemView.findViewById(R.id.text);
mir = (TextView) itemView.findViewById(R.id.mir);
this.itemView = itemView;
}
}
}