使用TextViews膨胀2.xml文件以在Recyclerview中正确显示

时间:2016-10-27 17:24:59

标签: android android-recyclerview layout-inflater

我的目标是在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;
        }
    }
}

0 个答案:

没有答案